0

在我制作的应用程序中,我将资源文件放到了一个文件夹(名为YoutubeAudioAutoDownloader-resources)中,并确保当我将该文件夹放在我的应用程序的 .jar 文件旁边时它可以正常工作。

当我使用jpackage以下 cmd 代码制作 exe 安装程序时:(抱歉,由于我的目录排列很糟糕,脏代码,我只想强调的部分是--type--resource-dir选项)

set jh=D:\development\jdk-14\bin
set appname=YoutubeAudioAutoDownloader v1.2.2
pushd %jh%

jpackage --type app-image --name "%appname%" --input "%~dp0packaging\jar" --dest "%~dp0packaging" --main-jar "YoutubeAudioAutoDownloader v1.2.2.jar" --main-class "com.awidesky.YoutubeClipboardAutoDownloader.Main" --resource-dir "%~dp0release.v1.2.1\YoutubeAudioAutoDownloader-resources" --icon "%~dp0icon\icon.ico

pause

我有问题:

我应该把我的YoutubeAudioAutoDownloader-resources文件夹放在哪里?app我的应用图像文件夹的文件夹中?还是因为选项我不必这样做--resource-dir?(我不确定我是否正确了解该选项)

4

1 回答 1

1

jpackage 中的--resource-dir参数用于更改应用程序 EXE 的资源,例如图标等,但听起来您实际上希望您自己的类使用myClass.getClassLoader().getResourceAsStream("somerespath.xyz").

我不认为 JDK14 jpackage 提供了一种方法来指定本地资源目录以添加到正在运行的 jpackage EXE 的类路径中。但它确实添加了 jar,所以如果你将所有资源目录与一个简单的 Java 类一起捆绑到一个 jar 中,MyNewClass你可以通过以下方式找到资源:

MyNewClass.class.getClassLoader().getResourceAsStream("pathto/aresource.xyz");

这个新的 jar 需要与您的其他 jar 一起使用,因此它被拾取,--input "%~dp0packaging\jar"然后每个启动器 EXE 的类路径字段app/xyz.cfg应该引用额外的资源 jar。

于 2020-09-09T08:39:53.233 回答