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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |