gpt4 book ai didi

java - Runnable Jar 找不到资源和其他库

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:26 25 4
gpt4 key购买 nike

我创建了一个桌面应用程序,但我遇到了生成的可运行 jar 的问题。在 Eclipse 环境中一切正常,但是当我生成 jar 时它只显示 swt 组件(菜单、选项卡等)。other libraries位置是空白区域(生成gallery的库)。同样不出现set ToolBar(包含带图片的按钮),GoogleMap.html不出现。

如何正确生成包含这些外部源的可执行 jar?

工具栏图片加载代码:

folderSearchIcon = new Image(display, this.getClass().getResourceAsStream("images/search_folder.png"));

GoogleMap.html 加载代码:

File mapFile = new File("resources/GoogleMap.html");        
if(!mapFile.exists()) {
System.out.println("File doesn't exist! " + mapFile.getAbsolutePath());
return;
}

生成可运行的jar:

enter image description here

我在 Eclipse 中的应用程序结构和生成的 jar 结构:

enter image description here

生成的 list :

Manifest-Version: 1.0
Rsrc-Class-Path: ./ swt.jar commons-imaging-1.0-SNAPSHOT.jar org.eclip
se.nebula.widgets.gallery_0.5.3.201210262156.jar xmpcore.jar metadata
-extractor-2.6.3.jar
Class-Path: .
Rsrc-Main-Class: geotagger.AppInit
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

最佳答案

对于工具栏图像,您需要添加一个斜杠,即代替

this.getClass().getResourceAsStream("images/search_folder.png")

你需要

this.getClass().getResourceAsStream("/images/search_folder.png")

这是因为,as explained in the JavaDocs , Class.getResourceAsStream 根据相关类的包解析相对路径,因此如果 thiscom.example.Foo 那么 getResourceAsStream("images/search_folder.png") 会在您的 JAR 中查找 com/example/images/search_folder.png。在斜杠前加上斜杠会使其查找 images/search_folder.png,这正是您的屏幕截图所提示的。

您需要对 GoogleMap.html 使用类似的技巧 - 您无法使用 java.io.File 从 JAR 中加载项目,但是您可以使用 this.getClass().getResource("/GoogleMap.html") 获取指向 JAR 中 HTML 文件的 java.net.URL

关于java - Runnable Jar 找不到资源和其他库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13989785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com