我有这个问题,并找到了一个不需要修改 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
使其在应用程序捆绑之前运行,但您可以根据需要进行更改。最终结果是一个名为的 jar <appName>-<version>-jar-with-dependencies.jar
,其中包含所有依赖 jar 的提取内容。您可以java -jar <jarName>
在使用它之前对其进行测试javapackager
。