我有这个问题,并找到了一个不需要修改cfg文件的类路径的替代解决方案。我的方法使用Maven,但可以使用Ant或脚本完成;只需要更多的工作。这个想法是创建一个包含主jar和所有依赖jar的所有内容的jar文件。这可以用一个Maven插件,像这样做:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.yourapp.MainClass</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
我执行阶段设置为prepare-package
,使其应用程序绑定前运行,但你可以改变需要。最终结果是一个名为<appName>-<version>-jar-with-dependencies.jar
的单个jar包,其中包含所有依赖jar的提取内容。在与javapackager
一起使用之前,您可以使用java -jar <jarName>
进行测试。
谢谢你的建议。这很有效,但也可能会产生许可证影响,因为它不一定可以重新打包从第三方收到的jar文件。所以,原始问题的解决方案仍然值得赞赏。 – ukor