2013-05-28 75 views
1

因此,我正在创建一个javafx Media类的新实例。获取库的路径 - Java

new Media("file://" + <path>); 

我遇到的问题是我需要的路径,附着在Eclipse类文件夹(“/music/launcher.wav”)。我能得到它在Eclipse中使用的工作:

this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath() 

方法,然后加入.replaceAll(“/ bin中/ COM /瑞斯/游戏”,“”),但这只是对Eclipse的调试,而不是修复实际导出的jar文件。如何获取导出的jar文件中的类文件夹的位置。

回答

3

这种方法:

this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath() 

返回jar文件位置 (针对问题用空格这里How to get the path of a running JAR file?检查),你必须将.jar的位置,你必须有你的资源,比方说,COM /音乐/发射后。 WAV(com.music包),让编程到你的资源,你必须使用的.jar位置,并添加到这个位置,你的资源位置是这样的:

String resources = "/com/music/launcher.wav"; 
this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()+resources; 

你可以添加你的资源作为一个图书馆也是如此,压缩它作为ZI P,但是你需要解压它通过代码(不硬但更复杂)的使用,你可以到lib文件夹的方式作为资源一样,只需更换这样的字符串资源:

String resoruces = "/lib/launcher.zip" 

让我知道如果你能使它工作,问候。

+0

它在Eclipse中工作,但它没有在Jar文件中工作。谢谢你,因为你给了我使用新的File(this.getClass()。getResource())。getPath(); – KingFaris10

+0

好的,它应该在jar文件中工作,我想给你一个例子吗?也许你错过了一些东西。 – JosephChilberry

+0

不,不,没关系。我说过,你给了我一个工作的想法。 – KingFaris10