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

前端之家收集整理的这篇文章主要介绍了java – Runnable Jar找不到资源和其他库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个桌面应用程序,我遇到了一个问题,我生成的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.

猜你在找的Java相关文章