【问题标题】:How can I specify a classpath for executables created with javapackager?如何为使用 javapackager 创建的可执行文件指定类路径?
【发布时间】:2017-10-17 21:22:04
【问题描述】:

Java 8 中的javapackager 命令能够创建独立的可执行文件。网上的例子一般只使用一个jar文件,但我有几个jar文件需要捆绑到应用程序中。文档指出,可以通过-B 选项告诉捆绑器发送classPath=path 的类路径。但是,在打包应用程序中生成的 <applicationname>.cfg 文件中,有一行显示

app.classpath=

它完全不受 classPath 参数的影响,但我必须手动编辑它以包含应用程序使用的所有 jar 以使其工作。

所有这些都在 macOS 上,我还不能在其他平台上尝试。

非常感谢任何见解——例如,一个使用多个罐子的工作示例。

【问题讨论】:

    标签: java macos javapackager


    【解决方案1】:

    文档略有缺陷:

    -Bclasspath=
    

    使用小 p 而不是大写 P 可以工作(在 Windows 和 MacOS 上测试)。

    【讨论】:

    • 那么,您的意思是使用小“p”而不是大写“p”?我会试试的 - 谢谢!
    【解决方案2】:

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

    【讨论】:

    • 感谢您的建议。这可能确实有效,但也可能涉及许可证,因为并非总是可以重新打包您从第三方收到的 jar 文件。因此,仍然会感谢原始问题的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多