我正在處理一個小項目,我需要將文件從應用程序JAR移動到JAR之外的另一個位置。關於ClassLoader.getResource()的NullPointerException異常
這是我的JAR文件看起來像:
MyApp.JAR
|- META-INF
|- MANIFEST.MF
|- files
|- myFile.exe
|- MainClass.class
我希望做的是移動myFile.exe
到C:\\
(例如)。 所以在MainClass
我試着用:
23. Path path = Paths.get(getClass().getClassLoader().getResource("/files/myFile.exe").toURI());
24. byte[] bytes = Files.readAllBytes(path);
25. FileOutputStream fos = new FileOutputStream("C:\\myFile.exe");
26. fos.write(b);
27. fos.close();
運行我的應用程序後,我收到了NullPointerException
,這裏是它的:
java.lang.NullPointerException
at MainClass.<init>(MainClass.java:23)
at MainClass.main(MainClass.java:66)
(66號線是我打電話與new MainClass();
構造函數)
我知道NPE
可能是因爲myFile.exe
找不到,但我不明白爲什麼... 當我打開JAR時,我可以看到files
文件夾內有exe
。 也許我是以錯誤的方式訪問文件? 我嘗試了許多其他方式,我在StackOverflow上找到這裏,但沒有任何作品...
在此先感謝和抱歉我的英語。
也許你可以線23分成多個作業線由行,這樣,這將是可見的什麼返回'null'? – RAnders00
正確的路徑是'files/myFile.exe',不帶前導斜槓。但是你應該從getClass()返回的InputStream中讀取字節getClassLoader()。getResourceAsStream(「files/myFile.exe」)' –