Java - URI不是分层错误只出现在导出的JAR中,而不是在Eclipse中



我有一个Java程序,它能够使用WINAPI更改输入图像的墙纸。

当我在Eclipse IDE中运行它时,一切正常,但是当我运行JAR时,我收到错误:

原因:java.lang.IllegalArgumentException:URI 不是分层的

public class Main {
//INIT USER32 for WINAPI
public static interface User32 extends Library {
User32 INSTANCE = (User32) Native.loadLibrary("user32",User32.class,W32APIOptions.DEFAULT_OPTIONS);        
boolean SystemParametersInfo (int one, int two, String s ,int three);         
}
public static void main(String[] args) throws IOException, URISyntaxException {
//Change wallpaper
System.out.println("Change wallpaper");
URL url = Main.class.getResource("/resources/img.jpg");
File f = new File(url.toURI());
String path = f.getPath();
User32.INSTANCE.SystemParametersInfo(0x0014, 0, path , 1);
}
}

图像在 JAR 中提供,因此错误可能与此有关,因为程序无法正确读取 JAR 内的 URL。 有没有办法解决这个问题?

当资源捆绑为 jar 时,jar 文件只是一个压缩文件,java 将被视为单个文件,这意味着它不会访问您的资源。

尝试使用它来代替getResourceAsStream(...);

最新更新