加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:24:10 所属栏目:Java 来源:网络整理
导读:我创建了一个桌面应用程序,我遇到了一个问题,我生成的runnable jar.一切都在 Eclipse环境中运行正常,但是当我生成jar时,它只会显示theswtcomponents(菜单,选项卡等). 其他库位置是一个空白区域(用于生成库的库).同样没有出现工具栏(包含图片的按钮),GoogleMa
我创建了一个桌面应用程序,我遇到了一个问题,我生成的runnable jar.一切都在 Eclipse环境中运行正常,但是当我生成jar时,它只会显示theswtcomponents(菜单,选项卡等).
其他库位置是一个空白区域(用于生成库的库).同样没有出现工具栏(包含图片的按钮),GoogleMap.htmldoes没有出现.

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

ToolBar图片加载代码:

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:

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

生成清单:

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解决了相关类的包的相对路径,所以如果这是一个com.example.Foo,那么getResourceAsStream(“images / search_folder.png”)将寻找com / example / images你的JAR里面有/search_folder.png预设斜杠将使它寻找images / search_folder.png而不是你的屏幕截图.

您将需要使用类似的GoogleMap.html技巧 – 您无法使用java.io.File从JAR内部加载项目,但您可以使用this.getClass().getResource(“/ GoogleMap.html”)以获取指向您的JAR内的HTML文件的java.net.URL.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读