Kyle Hamilton
asked on
loading a file inside a Java package
I'm trying to load an image, like this:
the image.jpg file is inside the package:
koza/utility/draw/image.jp g
package koza.utility.draw
I get this exception.
not sure what I'm doing wrong.
URL url = getClass().getResource("image.jpg");
File f = new File(url.getPath());
the image.jpg file is inside the package:
koza/utility/draw/image.jp
package koza.utility.draw
I get this exception.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
not sure what I'm doing wrong.
ASKER
same error, both this:
and this:
URL url = getClass().getResource("/koza/utility/draw/image.jpg");
and this:
URL url = getClass().getResource("koza/utility/draw/image.jpg");
But what are you doing *after* the code i gave you? You don't want/need to create a File out of it btw
ASKER
I just want to display an image based on some result.
the only way I can get it to work is by either providing an absolute path to the image, which totally sucks, cause then I can't share my code. Or, provide the path in the args array, which is also clumsy. So I would really like some way of providing the image path that just works no matter what machine it's running on.
the only way I can get it to work is by either providing an absolute path to the image, which totally sucks, cause then I can't share my code. Or, provide the path in the args array, which is also clumsy. So I would really like some way of providing the image path that just works no matter what machine it's running on.
// URL url = getClass().getResource("grumpycat.jpg");
// File file = new File(url.getPath());
//File f = new File("/Volumes/Victoria/Rosemary/koza/utility/draw/grumpycat.jpg");
File grumpy = new File(args[0]);
BufferedImage img1 = ImageIO.read(grumpy);
File dancing = new File(args[1]);
BufferedImage img2 = ImageIO.read(dancing);
if(result){
g2d.drawImage(img2, null, 0,0);
}else{
g2d.drawImage(img1, null, 0,0);
}
ASKER
BTW, if I'm doing this in a completely retarded way, I will not take any offense if someone points that out, and helps me do it right.
URL url = getClass().getResource("/koza/utility/draw/image.jpg");
BufferedImage img1 = ImageIO.read(url);
ASKER
:( still the same error
That can only be because the image is not at that location
ASKER
but it is. for sure.
when I access it via args array, there is no prob.
?? :(
when I access it via args array, there is no prob.
?? :(
ASKER
does it matter how I run the code?
here's my script that runs from within a src dir (src/koza/utility/draw ):
here's my script that runs from within a src dir (src/koza/utility/draw ):
cd bin
java koza.utility.draw.Play
cd ../
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi CEHJ,
your code works.
But when I try to change the package and corresponding directory structure to something else, it doesn't work anymore.
Say I want to have another project, something like:
koza/experiments/flyingCat s/image.jp g
I put my image.jpg and Play.java in the flyingCats dir as per above ^^
In the Play.java file I change the package name to package koza.experiments.flyingCat s and the URL to /koza/experiments/flyingCa ts/image.j pg
I can't get that to work. Even with the Play.java file you provided. What could I possibly be doing wrong?
your code works.
But when I try to change the package and corresponding directory structure to something else, it doesn't work anymore.
Say I want to have another project, something like:
koza/experiments/flyingCat
I put my image.jpg and Play.java in the flyingCats dir as per above ^^
In the Play.java file I change the package name to package koza.experiments.flyingCat
I can't get that to work. Even with the Play.java file you provided. What could I possibly be doing wrong?
http://daffodil.dyndns.biz/webtmp/cats.jar
Of course, it must be said that it's better practice to place image files in a lower resources branch off the package tree
Of course, it must be said that it's better practice to place image files in a lower resources branch off the package tree
ASKER
Hi CEHJ,
thank you so much for sticking with me. I figured out what I did wrong. thinking about it, it was kinda stupid, but sometimes you just get so close to something, the obvious eludes you :)
I had my images in the src directory, not the bin directory where the classes end up. oh well. All is well now.
If I put an img directory above the source dir like you're suggesting, like this:
MyProject
src
bin
img
then I can just reference my path like this: ../../img right? anyway, I'll try that.
Cheers,
Koza
thank you so much for sticking with me. I figured out what I did wrong. thinking about it, it was kinda stupid, but sometimes you just get so close to something, the obvious eludes you :)
I had my images in the src directory, not the bin directory where the classes end up. oh well. All is well now.
If I put an img directory above the source dir like you're suggesting, like this:
MyProject
src
bin
img
then I can just reference my path like this: ../../img right? anyway, I'll try that.
Cheers,
Koza
ASKER
Thanks a million, as always :)
:)
Yes, then you'd address the image as "/img/image.jpg"
Yes, then you'd address the image as "/img/image.jpg"
ASKER
ok, so now to further procrastinate from the project that I'm actually supposed to be making, I'd like to know if I can preserve the gif animation in my icon.
I'll ask a new question about that.
I'll ask a new question about that.
Open in new window