Внедрение ресурсов (изображений, звуковых фрагментов и т. Д.) В проект Java, а затем использование этих ресурсов - PullRequest
29 голосов
/ 16 сентября 2010

Я искал способ встраивания ресурса в проект Java (используя Eclipse v3.6.0), а затем использовал этот встроенный ресурс в элементе управления (например, JLabel).Я видел методы ссылки на ресурсы из файловой системы.После разработки проекта я хотел бы опубликовать приложение в виде исполняемого файла.Следует отметить, что эти исполняемые файлы будут развернуты / запущены на платформах Windows, * NIX и Linux.

Я знаю, что это можно сделать в мире Visual Studio, но я очень незнаком, как это сделать вJava / Eclipse IDE.В качестве дополнительного вопроса, как мне заставить Eclipse создать проект как исполняемый файл, чтобы его можно было запускать?

Любая помощь очень ценится.

Пометить

ОБНОВЛЕНИЕ 1:

Основываясь на ответе BalusC , я хотел поделиться кодом, необходимым для решения моей проблемы.Мои классы находятся в пакете "Viking.Test", а затем я поместил файл изображения в пакет "Viking.Test.Resources".Все это делается в Eclipse для импорта изображения в проект.

  1. Я импортировал изображение, щелкнув правой кнопкой мыши по Проект -> Импорт -> Общие / Файловая система дляисточник импорта.
  2. Выбранная папка, содержащая изображение для импорта
  3. Выбранный «Project/src/Viking/Test/Resources» для «В папку» параметр
  4. Не изменил ни один из параметров и нажал «Завершено»

. В исходном файле я добавил следующий код для вставки изображения в JLabel (LblLogo)

try
{
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  InputStream input = classLoader.getResourceAsStream(
    "Viking/Test/Resources/MyImage.jpg");
  Image logo = ImageIO.read(input);
  LblLogo = new JLabel( new ImageIcon( logo ) );
  LblLogo.setBounds(20, 11, 210, 93);
  getContentPane().add(LblLogo);
}
catch ( IOException e ) {  }

1 Ответ

17 голосов
/ 16 сентября 2010

Просто поместите эти ресурсы в структуру источника / пакета и используйте ClassLoader#getResource() или getResourceAsStream(), чтобы получить их как URL или InputStream из classpath с помощьюполный путь к указанному пакету.

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("/image.gif");
// ...

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

InputStream input = getClass().getResourceAsStream("image.gif");

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

Щелкните правой кнопкой мыши Java Project> Export> Runnable JAR File .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...