当我mvn clean package
项目并使用java -jar target/project.jar
运行时,它会抛出一个错误,它无法从外部jar中找到某个类。
采取的步骤
所有外部广告都位于我的项目的文件夹中:/jars
或/jars/morejars/
将jar添加到构建路径:在Eclipse中,我右键单击project
,转到build path
并选择add external archives
。我可以看到eclipse在“Maven dependencies”文件夹下创建了一个库文件夹“references libraries”。当我查看project
- > Properties
- > Java Build Path
- > Libraries
我可以看到所有进口的罐子。
其中一些外部广告在<dependency>
中被描述为<systemPath
(pom.xml
},因此Referenced Libraries
但Maven dependencies
中不会显示它们(有趣的是,运行我的打包项目时找不到的类位于不在Referenced Libraries
但Maven 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>
使用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
运行BUILD SUCCESS
- &gt; java -jar target/project.jar
some.class
- &gt;无法从external.jar
/api/v1/loadCustomer
醇>
感谢您的帮助
答案 0 :(得分:2)
问题显然是依赖关系。当您的应用程序开始加载它时,它会寻找正常运行所需的类。虽然它从jar库加载一个类,并且该库类也引用另一个jar库文件中的某个其他类,但该类(jar文件)在类路径中不可用,它将给出上述错误。因此,检查maven依赖关系并获取应用程序所需的所有jar。同样基于错误消息,您还可以在pom.xml文件中添加jar引用。例如,如果您收到类似Failed to load com.apache.some.Example.class
的错误,只需google Example.class jar文件并从maven存储库获取。
希望这会对你有所帮助。