Как упаковать все ресурсы в работающий JAR в Eclipse - PullRequest
1 голос
/ 18 июля 2011

В настоящее время я работаю над своей собственной маленькой видеоигрой на Java, но на данный момент, когда я даю кому-нибудь файл Runnable Jar, чтобы он мог играть, я должен отправить им 22 других необходимых файла ресурсов иони помещают это в ту же самую папку.Это невероятно неудобно, и я знаю, что есть способ автоматически упаковать эти ресурсы в исполняемый файл JAR.Если я не могу сделать это, то я хотел бы по крайней мере знать, как получить доступ к файлам в Runnable Jar, чтобы я мог просто скопировать и вставить файлы внутри.Я прочесал интернет и никаких предложений не сработало.Я могу правильно запустить программу в Eclipse, если я использую этот код:

    URL url = this.getClass().getResource("Jugger-Nog.jpg");
         image = ImageIO.read(new File(filePath));
         //image = ImageIO.read(url);

В первой строке создается URL-адрес, который я и читал на многих веб-страницах, но с помощью этого и 3-й строки кода сделалне работает в JAR или в Eclipse, но вторая строка сама по себе будет отлично работать в Eclipse.Любые идеи, потому что в Интернете их не много.

Ответы [ 4 ]

0 голосов
/ 13 июля 2017

Папка ресурсов установки

Первое, что вам нужно сделать, это настроить папку ресурсов. В Eclipse щелкните правой кнопкой мыши свой проект и перейдите в «Создать»> «Папка», назовите эту папку как хотите. Снова щелкните правой кнопкой мыши по вашему проекту и перейдите в Свойства. В этом окне нажмите на «Путь сборки Java», а затем на вкладку «Библиотеки». Нажмите «Добавить папку классов» и выберите папку, созданную ранее. Здесь вы можете разместить свои файлы ресурсов.

Доступ к вашим ресурсам

В вашем коде Java вы можете использовать следующее:

%CLASSNAME%.class.getResourceAsStream("/%FILENAME%");

Где %CLASSNAME% - это имя класса, в котором вы находитесь, а %FILENAME% - это имя файла, к которому вы хотите получить доступ. Это вернет InputStream. Если вы хотите загрузить изображение, вы можете просто обернуть его вызовом ImageIO.read(stream), например:

ImageIO.read(%CLASSNAME%.class.getResourceAsStream("/%FILENAME%"));

Кроме того, обратите внимание на косую черту перед файлом, к которому вы хотите получить доступ, я боюсь, это обязательно.

Почему мы не можем использовать файл

Вы не можете использовать File, поскольку он представляет собой реальный физический файл в вашей файловой системе, когда вы упаковываете его в jar-файл, он является частью вашего jar-файла, а не фактическим файлом в вашей файловой системе.

0 голосов
/ 18 июля 2011

Неужели так плохо поместить файл JAR и файлы ресурсов в один каталог, а не упаковать все это в JAR?

Вы можете упаковать свою игру в Установщик, который копирует все этов папку Программы и ставит несколько ярлыков.

0 голосов
/ 03 августа 2012

У меня тоже была эта проблема, но мое решение состояло в том, что программа проверяет, существует ли папка в %app data%/roaming/, вызванная для myApp.Если это не так, программа делает mkdir и создает эту папку.Тогда просто сообщите программе, где находится все исходные файлы.Не нужно хоккейно копаться с вашими файлами.

0 голосов
/ 18 июля 2011

Вы должны использовать:

InputStream in = this.getClass().getResourceAsStream("Jugger-Nog.jpg");
image = ImageIO.read(in);
...