2015-05-22 6 views
0

Я с этой проблемой, когда ни один из нагрузки ресурсов, когда я запустить JAR программы. Я изменил код и проверил, что это действительно и код, загружающий изображения, и код, который загружает звуки, не работает. Он отлично работает, когда я запускаю его в затмении. Я проверил с 7-Zip, и файлы звуков и изображений больше не находятся в папке res. Я попытался изменить файлы путей и расположение ресурсов в своей программе, прежде чем экспортировать их, но это не сработало. У меня также есть папка res в качестве исходной папки в пути сборки. Я экспортирую JAR с eclipse, а затем добавляю в него свои библиотеки с помощью JarSplicer. Вот коды, которые загружаются изображения и звуковые ресурсы:Невозможно загрузить ресурсы при выполнении кода из исполняемого файла JAR

-load звуко-

public static WaveData LoadSound(String path){ 
    WaveData sound = null; 
    try { 
     sound = WaveData.create(new BufferedInputStream(new FileInputStream(path))); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return sound; 
} 

-load Images-

public static Texture LoadTexture(String path, String fileType){ 
    Texture tex = null; 
    InputStream in = ResourceLoader.getResourceAsStream(path); 
    try{ 
     tex = TextureLoader.getTexture(fileType,in); 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 
    return tex; 
} 

Вот моя ошибка в командной строке:

enter image description here

Вот файлы в баночке каждый раз, когда я экспортировал I т (независимо от того, были ли ресурсы в разрешении или нет):

enter image description here

Я здесь тупик. Если кто-то знает, как это исправить, тогда, пожалуйста, помогите мне.

+0

Где 'Рез/images' в файле баночки? Вы пробовали просто '/ images /' вместо этого? – MadProgrammer

+0

Обратите внимание, что папка является просто «образами», но вы пытаетесь «res/images». – immibis

+0

@MadProgrammer он не создает папку res при ее экспорте. Он просто извлекает папки изображений и звуков из папки res и помещает их туда. – Entity1037

ответ

1

Я нашел ответ на мою проблему.

ResourseLoader.getResourceStreamAs() не работает внутри JAR-файлов, поэтому вам нужно сделать getClass().getResourceStreamAs(), или [ClassName].class.getResourceStreamAs(), если он статичен.

Кроме того, мне пришлось изменить расположение файлов с res/[resource file]/[resource] на /[resource file]/[resource], потому что при экспорте он извлекает все файлы в res. Кроме того, вы должны убедиться, что у вас есть, что / в начале пути туда для того, чтобы назначить его для поиска в исходной папке, или же он будет искать в папке класса, который называется getResourceStreamAs(). А также, new FileInputStream() не работает в JAR-файлах, поэтому вместо этого вы должны использовать [ClassName].class.getResourceStreamAs(). О, и вдобавок ко всему, у меня было несколько файлов, которые каким-то образом получили название расширения во всех столицах без причины. Так что я немного смутился. В основном я просто должен был сделать кучу возиться с кодом, но у меня все получилось!

Еще одна вещь: убедитесь, что вы добавили свою папку resources на вкладку источников в пути сборки, иначе eclipse не будет экспортировать ее. И если вы хотите, чтобы ваши библиотеки экспортировались в ваш JAR, вам придется добавлять их вручную, создавая жирную банку с JarSplicer.

+0

Что такое "getResourceStreamAs()"? Вы имеете в виду getResourceAsStream()? –

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