Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Weird case sensitivity bug in Class.getResource?

Tags:

java

resources

I was loading an image resource with the following code and it works fine from my dev environment (netbeans) but threw an exception as soon as it ran from the desktop.

new ImageIcon(Images.class.getResource("images/highlighter24.gif"));

I traced it down to my file having different case than in the code.

Fine, my bad, but why the inconsistent behavior?

Gremlins?

Note: I'm running on windows before you ask.

like image 456
Allain Lalonde Avatar asked Oct 24 '08 19:10

Allain Lalonde


1 Answers

Let me guess: in NetBeans it was loading it from the file system (which is case-insensitive) whereas when running it from the desktop it was in a jar file (which is case-sensitive).

I've seen this kind of thing before, where a web app worked fine on Windows but failed on Unix because we'd got the case wrong in the URL.

If you think of jar files as "just another file system" then it makes sense, even if it's slightly annoying to have the inconsistency.

like image 185
Jon Skeet Avatar answered Oct 20 '22 00:10

Jon Skeet