2013-05-28 6 views
1

Итак, я делаю новый экземпляр класса javafx Media.Получить путь библиотеки - Java

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

Проблема у меня в том, мне нужно, чтобы сделать путь к папке класса («/music/launcher.wav») прилагается в Eclipse. Я могу заставить его работать в Eclipse, с помощью: Метод

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

, а затем добавить .replaceAll («/ bin/ком/Faris/игра», «»), но это только исправление для 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; 

вы могли бы добавить свой ресурс в библиотеке тоже сжатие это как ЗИ P, но тогда вам нужно будет распаковать его для использования с помощью кода (не жесткого, но еще более сложного), вы можете получить в Lib папки точно так же, как ресурс, просто заменить ресурс строки вида:

String resoruces = "/lib/launcher.zip" 

дайте мне знать, если вы можете заставить его работать, привет.

+0

Он работал в Eclipse, но он не работал в файле Jar. Спасибо, что вы дали мне идею использования нового файла (this.getClass(). GetResource ()). GetPath(); – KingFaris10

+0

ОК, он должен работать в файле jar, хотите, чтобы я привел вам пример? возможно, вы что-то упускаете. – JosephChilberry

+0

Нет, все в порядке. Я сказал, что вы дали мне представление о работе. – KingFaris10

Смежные вопросы