Рабочая область Eclipse: Должен ли я поместить свои изображения в папку 'src' или 'bin'? - PullRequest
6 голосов
/ 28 августа 2011

Я работаю в проекте на Java, и иногда все мои изображения случайно исчезают из папки bin проекта. Это становится очень раздражающим, потому что я должен помещать все заново каждый раз, когда это происходит. Кто-то сказал мне, что я не должен помещать свои дополнительные файлы в bin, а в src. Но затмение не читает мои изображения, если я помещаю их в src, как будто их там не было. Почему это происходит? Спасибо.

Ответы [ 7 ]

12 голосов
/ 27 января 2014

Выполните следующие два шага. У меня хорошо получилось в Eclipse Kepler.

  1. Добавьте ваше изображение или другие файлы ресурсов в ваш проект Java

    я. Щелкните правой кнопкой мыши ваш проект Java и выполните: New -> Source Folder. В этом примере я называю свою папку «res».

    II. Перейдите в браузер файлов, и вы должны увидеть эту папку «res» в корневой папке вашего проекта Java. Теперь скопируйте или переместите изображение и другие файлы ресурсов в него.

    III. Теперь перейдите в Eclipse, щелкните правой кнопкой мыши на этой папке "res" и выполните: Обновить. Вы должны увидеть эти файлы в нем.

    IV. Теперь соберите проект, и вы увидите, что ваши файлы ресурсов скопированы в целевую папку bin для сборки.

  2. Теперь в вашем классе (например, в вашем собственном классе JFrame, указанном this в моем примере кода ниже) вы можете получить доступ к файлу ресурса и отметить начальный « / », чтобы указать расположение файла относительно двоичного корня:

    Image img = new ImageIcon(this.getClass().getResource("/MyImage.gif")).getImage();
    

Еще одно примечание: вы можете использовать несколько таких папок ресурсов для организации ваших ресурсов. После сборки проекта все они попадают в целевую корневую папку bin. И, конечно, вы можете экспортировать свой проект как «Runnable Jar File», затем вы можете запустить свое приложение автономно, так как все ресурсы автоматически упаковываются в ваш JAR-файл.

12 голосов
/ 28 августа 2011

Создайте одну папку resources и поместите их туда.Затем пометьте эту папку как «исходная папка» (щелкните правой кнопкой мыши -> Путь сборки -> Использовать как исходную папку)

6 голосов
/ 28 августа 2011

Не следует помещать их в каталог bin - он должен рассматриваться как каталог только для вывода, который может быть удален в любое время.

Если вы используете Class.getResource() или ClassLoader.getResource() (или аналогичные API-интерфейсы), то я ожидаю, что он будет отлично работать из каталога src или чего-либо еще в вашем пути сборки, принимая настройки по умолчанию. Вы должны проверить настройки, хотя.

Из документов на пути сборки :

Ресурсы, существующие в исходных папках, копируются в выходную папку, если параметр на странице настроек Java> Компилятор> Сборка не указывает, что ресурс фильтруется. Выходная папка определяется для каждого проекта, за исключением случаев, когда в исходной папке указана собственная выходная папка.

Так что вам нужно проверить страницу настроек «Построение», чтобы увидеть, фильтруете ли вы ресурсы. Если вы посмотрите в каталог bin после сборки, вы сможете увидеть их.

Обратите внимание, что вы, возможно, захотите поместить ресурсы в их собственный каталог только для организационных целей - это нормально, и вы можете сделать это либо в каталоге src, либо создав другой каталог по пути сборки.

0 голосов
/ 18 сентября 2017

Я бы преобразовал проект в Maven и сделал бы maven install .

0 голосов
/ 25 февраля 2017

У меня была та же проблема, поэтому я просто прошёл изображение в обеих папках 'bin' и 'src', в моем случае у меня есть этот код:

Image image2 = new Image(getClass().getResourceAsStream("IMAGES/Main-icon.png"));

Запустите приложение и оно будет работать

0 голосов
/ 15 апреля 2013

для Eclipse вы можете просто создать папку прямо в папке src (или в каком-то ее пакете).Затем скопируйте и вставьте файлы изображений в созданную папку.Если вам нужно получить правильный путь до текущего изображения, просто используйте Class.getResource ("yourCreatedFolder / yourImage.someExtension")

0 голосов
/ 28 августа 2011

Проверьте, есть ли в вашем проекте папка res, которая обозначает ресурсы. Если это так, в этой папке должна быть папка «Img». Вы должны положить их туда.

...