maven - 在打包的jar

时间:2018-04-24 10:28:36

标签: java maven

当我mvn clean package项目并使用java -jar target/project.jar运行时,它会抛出一个错误,它无法从外部jar中找到某个类。

采取的步骤

  1. 所有外部广告都位于我的项目的文件夹中:/jars/jars/morejars/

  2. 将jar添加到构建路径:在Eclipse中,我右键单击project,转到build path并选择add external archives。我可以看到eclipse在“Maven dependencies”文件夹下创建了一个库文件夹“references libraries”。当我查看project - > Properties - > Java Build Path - > Libraries我可以看到所有进口的罐子。

  3. 其中一些外部广告在<dependency>中被描述为<systemPathpom.xml},因此Referenced LibrariesMaven dependencies中不会显示它们(有趣的是,运行我的打包项目时找不到的类位于不在Referenced LibrariesMaven dependencies但不在 <dependency> <groupId>external.jar.groupid</groupId> <artifactId>external.jar.artifactid</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/jars/external-jar.jar</systemPath> </dependency> 的外部jar中)

    e.g。

    <build>
    1. 使用maven程序集插件(如here所述),这是我的完整<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build> 配置:

      mvn clean package
    2. 运行BUILD SUCCESS - &gt; java -jar target/project.jar

    3. some.class - &gt;无法从external.jar

    4. 中找到/api/v1/loadCustomer

      感谢您的帮助

1 个答案:

答案 0 :(得分:2)

问题显然是依赖关系。当您的应用程序开始加载它时,它会寻找正常运行所需的类。虽然它从jar库加载一个类,并且该库类也引用另一个jar库文件中的某个其他类,但该类(jar文件)在类路径中不可用,它将给出上述错误。因此,检查maven依赖关系并获取应用程序所需的所有jar。同样基于错误消息,您还可以在pom.xml文件中添加jar引用。例如,如果您收到类似Failed to load com.apache.some.Example.class的错误,只需google Example.class jar文件并从maven存储库获取。

希望这会对你有所帮助。