开发者

ClassLoader.getResource() doesn't work from .jar file

开发者 https://www.devze.com 2022-12-10 21:20 出处:网络
I have the following code: private final ImageIcon placeHolder = new ImageIcon(this.开发者_JAVA百科getClass().getClassLoader().getResource(\"Cards\\\\trans.png\"));

I have the following code:

private final ImageIcon placeHolder = new ImageIcon(this.开发者_JAVA百科getClass().getClassLoader().getResource("Cards\\trans.png"));

But this does not work once my application exported into a .jar file.


Your "\t" is being compiled as a tab - you need to escape it:

private final ImageIcon placeHolder = new ImageIcon(
    this.getClass().getClassLoader().getResource("Cards\\trans.png"));

Note the double backslash. This may not be the only thing wrong, of course - but it's a start...

In fact, I would specify it with a forward slash instead. That works on both Windows and Unix-based OSes anyway, and it also works with jar files. The only reason I highlighted the double backslash was to raise the point of string escaping in general. Try this:

private final ImageIcon placeHolder = new ImageIcon(
    this.getClass().getClassLoader().getResource("Cards/trans.png"));

Next, make sure you've got the exact correct name for the file, including case. Even though Windows file systems aren't generally case-sensitive, jar files are. If it's actually "cards" instead of "Cards" or "TRANS.png" instead of "trans.png", it won't work.


Use this for getting images in jar file

ClassLoader.getSystemResource("images/Springz3.png"));

0

精彩评论

暂无评论...
验证码 换一张
取 消