Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Eclipse动态web应用程序中使用java jar库_Java_Eclipse_Tomcat_Dynamic - Fatal编程技术网

如何在Eclipse动态web应用程序中使用java jar库

如何在Eclipse动态web应用程序中使用java jar库,java,eclipse,tomcat,dynamic,Java,Eclipse,Tomcat,Dynamic,我正在尝试为需要共享一组公用JAR(在某些情况下,还有刚刚导入工作项目的代码)的项目设置目录结构(和项目文件) 例如,假设我有一个名为“common”的通用项目。此项目包含公共代码和JAR,这些代码和JAR可能由独立java应用程序或动态web应用程序使用 我的web项目(称之为webapp1)从“common”导入源代码,因此这不是问题。我这样做的原因是,在这一点上,我真的不需要创建一个“公共”项目并将其编译成一个jar,然后从webapp1引用它,因为webapp1不会获取供应商jar,因为

我正在尝试为需要共享一组公用JAR(在某些情况下,还有刚刚导入工作项目的代码)的项目设置目录结构(和项目文件)

例如,假设我有一个名为“common”的通用项目。此项目包含公共代码和JAR,这些代码和JAR可能由独立java应用程序或动态web应用程序使用

我的web项目(称之为webapp1)从“common”导入源代码,因此这不是问题。我这样做的原因是,在这一点上,我真的不需要创建一个“公共”项目并将其编译成一个jar,然后从webapp1引用它,因为webapp1不会获取供应商jar,因为它们都必须在WEB-INF/lib下

那我该怎么做呢?我曾考虑将WEB-INF作为一个符号链接,链接到另一个包含JAR的目录,但这对Windows环境不起作用。但这基本上就是我想要的。以下是对此的描述:

common \
  src \
    some.source.packages
  lib \
    HibernateLibs \
      hibernate.jar
      hibernate2.jar
    ApacheCommonLibs \
      common-string.jar \
      etc.

webapp1
  src \
    local.source.packages
    reference to common.source.packages above
  WebContent \
    WEB-INF \
      lib \
        This is where I'd like to place references to the libs in common
        (only those I need for this web app)
如果我只是使用webapp1通用引用,这种方法是可行的,但是当我尝试从IDE运行webapp1时,这些库实际上并不在正确的位置

请注意,Maven等构建系统或多或少已经过时了,因为我的公司只允许特定的LIB和这些LIB的版本(这很痛苦,但这是我必须处理的)


谢谢你对这方面的见解。我并不拘泥于项目结构,但我确实希望避免多个项目都有相同的jar,并且必须保持它们的同步(更不用说这会使检出代码的速度非常慢)。

创建web项目时,不必在web\u INF文件夹中添加库

解决方案:

  • 您写道您不想使用maven“因为我的公司只允许特定的LIB和这些LIB的版本”
  • 您可以将库安装到本地maven存储库和本地计算机上。因此,将从本地计算机检索依赖项。很简单:

     mvn install:install-file -Dfile=[file_path] -DgroupId=[your group id] -DartifactId=[artifact id] -Dversion=[version]   -Dpackaging=jar
    
    您还可以使用NexusJfrog artifactory服务器检索jar。此服务器将仅适用于您的公司。因此,只有您的公司才能使用罐子

  • 您还可以从JAR/EAR/WAR中提取依赖关系(但这取决于您使用的是什么技术-Spring、EJB还是servlet);例如,让我们为Spring框架编写一个示例:
  • 默认情况下,spring boot插件使用以下结构将项目的所有依赖项打包到可执行JAR中:

    • 罐子
      • BOOT-INF
        • 类(包含java包和类)
        • lib(包含依赖项jar)
      • META-INF(包含MANIFEST.MF)
      • org(spring运行时支持包)
    MANIFEST.MF负责查找JAR文件。在春天,我们有以下午餐者:JarLauncherWarLauncher、properties launcher。他们的目的是加载资源。JarLauncher只能定位和加载BOOT-INF中的类和lib目录中的jar。但是您可以使用PropertiesLauncher来指定项目外部的jar文件。那就让我们做吧!首先,你应该使用ZIP布局

    马文:

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <layout>ZIP</layout>
        </configuration>
    </plugin>
    
    那么一切都很简单。现在运行web应用程序

    java -Dloader.path=lib,external-jar.jar -jar starter.jar
    

    现在我们有了web应用程序而没有web\u INF文件夹,并且我们有应用程序之外的所有依赖jar文件最后我们有许多项目使用与项目外部相同的库JAR

    创建web项目时,无需将库添加到web\u INF文件夹中

    解决方案:

  • 您写道您不想使用maven“因为我的公司只允许特定的LIB和这些LIB的版本”
  • 您可以将库安装到本地maven存储库和本地计算机上。因此,将从本地计算机检索依赖项。很简单:

     mvn install:install-file -Dfile=[file_path] -DgroupId=[your group id] -DartifactId=[artifact id] -Dversion=[version]   -Dpackaging=jar
    
    您还可以使用NexusJfrog artifactory服务器检索jar。此服务器将仅适用于您的公司。因此,只有您的公司才能使用罐子

  • 您还可以从JAR/EAR/WAR中提取依赖关系(但这取决于您使用的是什么技术-Spring、EJB还是servlet);例如,让我们为Spring框架编写一个示例:
  • 默认情况下,spring boot插件使用以下结构将项目的所有依赖项打包到可执行JAR中:

    • 罐子
      • BOOT-INF
        • 类(包含java包和类)
        • lib(包含依赖项jar)
      • META-INF(包含MANIFEST.MF)
      • org(spring运行时支持包)
    MANIFEST.MF负责查找JAR文件。在春天,我们有以下午餐者:JarLauncherWarLauncher、properties launcher。他们的目的是加载资源。JarLauncher只能定位和加载BOOT-INF中的类和lib目录中的jar。但是您可以使用PropertiesLauncher来指定项目外部的jar文件。那就让我们做吧!首先,你应该使用ZIP布局

    马文:

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <layout>ZIP</layout>
        </configuration>
    </plugin>
    
    那么一切都很简单。现在运行web应用程序

    java -Dloader.path=lib,external-jar.jar -jar starter.jar
    
    现在我们有了web应用程序而没有web\u INF文件夹,并且我们有应用程序之外的所有依赖jar文件<强>终局