我创建了一个maven java项目,我最终想制作jar文件。让我说我的项目名称是mycustomjar,我的最终jar文件是mycustomjar.jar
mycustomjar项目使用其他一些依赖项或jar文件,比如说log4J
现在当我将mycustomjar.jar文件导入到其他一些java项目时,它会显示log4J类的ClassNotFoundException。
最初,我在pom.xml中使用maven依赖进行此操作,但这不是在jar中导入依赖项, 所以我从pom.xml中删除了依赖项,并将所有必需的jar(例如:log4j-1.2.17.jar)直接导入mycustomjar项目。 即使这样,问题也没有得到保存。
我正在使用STS,在尝试制作mycustomjar.jar时,它有两个选项
(1)导出 - > jar文件
(2)出口 - > runnable jar文件
目前没有任何对我有用。请帮助。
答案 0 :(得分:1)
解决方案1:
您可以在pom.xml文件中使用maven依赖项插件,然后在类路径中引用依赖项。
在你的pom.xml中
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
然后当你启动应用程序时,请参考:
java -cp .:lib/*:your_app.jar com.yourpackage.Main
解决方案2:
使用maven程序集插件并构建一个大胖jar,它将所有依赖类包含在一个jar中
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>${project.build.finalName}-lib</finalName>
<appendAssemblyId>false</appendAssemblyId>
<classifier>lib</classifier>
</configuration>
</plugin>
从这个大胖罐子里跑出主要的班级。
java -cp your_app.jar com.yourpackage.Main