【发布时间】:2016-03-26 04:46:25
【问题描述】:
我正在做一个小项目,我需要将文件从应用程序 JAR 移动到 JAR 之外的另一个位置。
这就是我的 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的内容? -
正确的路径是
files/myFile.exe,没有前导斜杠。但是你应该从getClass().getClassLoader().getResourceAsStream("files/myFile.exe")返回的 InputStream 中读取字节
标签: java file jar nullpointerexception