I'm working in a project in Java and sometimes all my images randomly dissapeared from the project's bin folder. It is getting very annoying because I have to put everything again every time it happens. Someone told me that I shouldn't put my extra files in bin but in src. But eclipse doesn't read my images if I put them in src, as if they weren't there. Why is this happening? Thanks.
问题:
回答1:
Create one resources
folder and put them there. Then mark that folder as "source folder" (right click -> Build Path -> Use as source folder)
回答2:
Follow these two steps. Worked well for me in Eclipse Kepler.
Bring your image or other resource files into your Java project
i. Mouse right click on your Java project and do:
New -> Source Folder
. In this example, I call my folder "res".ii. Go to your file browser and you should see this "res" folder under your Java project's root folder. Now copy or move your image and other resource files into it.
iii. Now go to Eclipse and right click on this "res" folder and do: Refresh. You should see these files show up in it.
iv. Now build the project and you should see your resource files get copied into the build target "bin" folder.
Now in your class (e.g. your own JFrame class as indicated by the
this
in my sample code below) you can access the resource file and note the leading "/" to indicate file location relative to binary root:Image img = new ImageIcon(this.getClass().getResource("/MyImage.gif")).getImage();
Another note: you can use multiple such resource folders to organize your resources. After project build, they all go into the build target root "bin" folder. And of course, you can export your project as "Runnable Jar File", then you can run your application standalone since all resources are automatically packaged into your jar file.
回答3:
You shouldn't put them in the bin
directory - that should be seen as an output-only directory, which could be wiped at any time.
If you use Class.getResource()
or ClassLoader.getResource()
(or similar APIs) then I'd expect it to work just fine from the src
directory or anything else on your build path, assuming the default settings. You should check the settings though.
From the docs on the build path:
Resources existing in source folders are copied to the output folder unless the setting in the Java > Compiler > Building preference page specifies that the resource is filtered. The output folder is defined per project except if a source folder specifies its own output folder.
So you need to check the "Building" preference page to see if you're filtering out resources. If you look in the bin directory after building, you should be able to see them.
Note that you may well want to put the resources in their own directory just for organizational purposes - that's fine, and you can do it either within the src
directory or by creating another directory on the build path.
回答4:
See if you project has a "res" folder, which stands for resources. If it does, in that folder there should be a "Img" folder. You should put them there.
回答5:
for Eclipse you may just create folder directly in src folder (or in some its package). Then Copy and Paste your image files into created folder. If You need to get proper path till current image just use Class.getResource("yourCreatedFolder/yourImage.someExtension")
回答6:
I had the same problem So I just past image in both folders 'bin' and 'src' in my case I have this code:
Image image2 = new Image(getClass().getResourceAsStream("IMAGES/Main-icon.png"));
run App and its will work
回答7:
I would convert project to Maven and do maven install.