Как добавить папку ресурсов в проект Java в Eclipse
Я хочу иметь место для хранения файлов изображений для использования в моем проекте Java (действительно простой класс, который просто загружает изображение на панель). Я везде искал и не могу найти, как это сделать. Как это сделать?
Я попытался добавить в проект новую папку, добавив в проект новую папку классов и добавив новую исходную папку в проект. Независимо от того, что я делаю, я всегда получаю IOException
. Папки всегда говорят, что они находятся на пути построения, поэтому я не уверен, что делать.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PracticeFrame extends JFrame{
private static BufferedImage image;
Thread thread;
public PracticeFrame() {
super();
setPreferredSize(new Dimension(640,480));
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main (String[] args) {
PracticeFrame pframe = new PracticeFrame();
try {
image = ImageIO.read(new File("/islands.png"));
} catch (IOException e) {
e.printStackTrace();
}
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image,0,0,null);
}
};
panel.setBackground(Color.BLUE);
panel.repaint();
pframe.add(panel);
}
}
EDIT: Что-то, что сработало для меня, и я понятия не имею, почему добавлял папку main/res/
в качестве папки класса, а затем удалял ее. Я запускал его, а /main/res/
был частью пути сборки в виде папки класса, и он все еще не работал. Когда я добавил его, у меня появилось всплывающее окно, в котором рассказывалось об исключенных фильтрах. Но когда я удалил папку из библиотек в пути сборки и изменил свой путь к файлу:
image = ImageIO.read(new File("src/main/res/islands.png"));
Я, по крайней мере, перестал бросать IOException
. Я не должен добавлять изображение на панель правильно, потому что он не отображается, но, по крайней мере, он нашел файл (я думаю).
Ответы
Ответ 1
Чтобы добавить папку resoure,
Путь сборки → Настроить путь сборки → Источник (вкладка) → Добавить папку → Создать новую папку
![enter image description here]()
добавить файл "my-resource.txt" в новую папку.
Затем в вашем коде:
InputStream res =
Main.class.getResourceAsStream("/my-resource.txt");
BufferedReader reader =
new BufferedReader(new InputStreamReader(res));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
Ответ 2
Попробуйте дать полный путь для чтения изображения.
Пример
image = ImageIO.read(новый файл ( "D:/work1/Jan14Stackoverflow/src/Strawberry.jpg" ));
ваш код не создает никаких исключений после предоставления полного пути.
Если вы хотите просто прочитать файл изображения в Java-коде.
Обратите внимание на следующее: http://docs.oracle.com/javase/tutorial/2d/images/examples/LoadImageApp.java
Если объект вашего класса создан в конце, ваш код отлично работает для меня и отображает изображение
// PracticeFrame pframe = new PracticeFrame();//comment this
new PracticeFrame().add(panel);
Ответ 3
Чтобы ответить на ваш вопрос, опубликованный в названии этой темы...
Шаг 1 → Щелкните правой кнопкой мыши на Java Project, выберите опцию "Свойства",
![Шаг 1 - > Щелкните правой кнопкой мыши на Java Project, выберите опцию]()
Шаг 2 → Выберите "Путь сборки Java" в меню слева, убедитесь, что вы находитесь на вкладке "Источник", нажмите "Добавить папку",
![Выбрать]()
Шаг 3 → Нажмите кнопку "Создать новую папку..." в нижней части окна
![Нажмите кнопку]()
Шаг 4 → Введите имя новой папки как "ресурсы", а затем нажмите "Готово",
/a >
Шаг 5 → Теперь вы сможете увидеть вновь созданные папки "ресурсы" в вашем проекте java, нажмите "ОК", снова нажмите "ОК"
![Теперь вы сможете увидеть вновь созданную папку и ресурсы в вашем проекте java, щелкните]()
Заключительный шаг → Теперь вы можете увидеть новую папку "Ресурсы" в проекте java
![Теперь вы можете увидеть новую папку и ресурсы под вашим проектом java]()
Ответ 4
После добавления папки ресурса попробуйте следующее:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("test.png");
try {
image = ImageIO.read(input);
} catch (IOException e) {
e.printStackTrace();
}