# Java and missing images

1. Apr 9, 2005

### Nylex

Hi, I'm working through the "Building an Application: Part 2: Introduction to Inheritance, Panels, and Layouts" on java.sun.com and the code I've written compiles fine, but the images that are supposed to appear in the JPanel aren't there.

Code (Text):
jl = new JLabel("Java Technology Dive Log", new ImageIcon("images/diveflag.gif"), JLabel.CENTER);
and

Code (Text):
diver = new JLabel("", new ImageIcon("images/diver.jpg"), JLabel.CENTER);
are where images are used.

The image files do exist. They're in a folder called "images", which itself is in a folder named "divelog". The whole code for the file is here, although obviously this class is used in another.

If anyone can help, thanks.

Last edited: Apr 9, 2005
2. Apr 9, 2005

### wave

Did you add those 3 lines to Welcome.java?

Code (Text):

add(jl, BorderLayout.NORTH);
add(ta, BorderLayout.CENTER);
add(diver, BorderLayout.SOUTH);

3. Apr 9, 2005

Yep, I did.

4. Apr 9, 2005

### faust9

Do you have your images folder and java .jar file in the same directory?

5. Apr 10, 2005

### Nylex

What .jar file?

6. Apr 10, 2005

### so-crates

I would use an absolute path to double check that is not a working directory problem. That would at least eliminate one possibility.

7. Apr 10, 2005

### Nylex

It works with an absolute path, so what else could be the problem?

8. Apr 10, 2005

### so-crates

Well there you go. Your working directory is not what you think it is !

9. Apr 10, 2005

### Nylex

Why's it not the current directory?!

10. Apr 10, 2005

### so-crates

I believe its usually the directory in which the class file is located, though I could be wrong. Check the documentation on Sun's site: http://java.sun.com.

11. Apr 10, 2005

### Nylex

Will do, thanks .

12. Apr 10, 2005

### so-crates

Actually I think its the directory in which the interpreter is run. How are you running the interpreter?

13. Apr 10, 2005

### Nylex

I'm using BlueJ. I'll try from the command line and see if that makes any difference.

Edit: I can't run from the command line. I'm getting:

Exception in thread "main" java.lang.NoClassDefFoundError: DiveLog (wrong name:
divelog/DiveLog)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher\$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

when I try "java DiveLog". The class name is DiveLog, so I don't know what the problem is. It works in BlueJ though .

Last edited: Apr 10, 2005
14. Aug 21, 2008

### mtpoland

New to the forum here.

I'm having the same problem with the images not being displayed.

Has anyone figured out the cure?

Mike

15. Aug 22, 2008

### BryanP

The interpreter's location is irrelevant because you can have work-related material in other directories.

A standard IDE for Java such as Eclipse can obviously be in a different location (such as c:\eclipse) and compile things fine from other directories because the compiler KNOWS where to find the standard libraries.

The thing with images is that they have to be in the /same/ folder as your classes, otherwise you have to explicitly define their entire paths.

If it's in a folder, then the folder has to be in the same folder as your main/test class.

If your main class as well as other classes are in lets say, C:\class

then the images should be in C:\class\images\<imageFile>

Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook