【问题标题】:NullPointerException on FileInput/OutputStream on jar [duplicate]jar 上的 FileInput/OutputStream 上的 NullPointerException [重复]
【发布时间】:2016-09-27 05:16:53
【问题描述】:

我正在开发的应用程序在工作时会给我带来很多问题

file1 = "src\\sga\\facturation\\data.ser";
FileInputStream fis = new FileInputrStream(file1);//this works fine on NetBeans

我试过了

file1 = "data.ser";
InputStream fis = ClassLoader.getSystemClassLoader().getResourceAsStream(file1);

但什么都没有;我还尝试更改目录的路径,它告诉我找不到文件,我什至尝试强制 C:\Folder 中的目录;我把文件放在哪里,但没有任何效果。 我试图删除这些行以查看 FileOutputStream 是否有效,但事实并非如此:( 这是适用于 NetBeans 的方法

 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file2));

这是我的剧目

My Path

感谢您的帮助 相关帖子从来没有告诉我一个可行的解决方案,所以如果你的注意力是在开始时给一个-1,那就去做吧!

【问题讨论】:

  • 是您的文件,您正尝试将其加载到您的 Jar 中还是在 Jar 旁边?编译时jar旁边还有src文件吗?
  • 我的文件必须和classes在同一个目录(所有的classes也在src/sga/facturation)
  • 输出 jar 的名称中是否有空格?
  • 它的名字是“SGA-Facturation.jar”
  • 您确定您的构建系统实际上已将文件放入 JAR 中吗?将其重命名为 *.ZIP 并使用存档管理器进行检查。

标签: java netbeans inputstream


【解决方案1】:

FileInputStream 根据当前工作目录解析相对路径。在您的 IDE 工作目录中可能与独立程序的工作目录不同。请改用绝对路径。

【讨论】:

  • 当我尝试这样做并打印路径时,我得到了这个:C:\bla\bla\bla\SGA-Facturation.jar!\sga\facturation\data.ser 并且路径上出现语法错误:/
  • 好吧,您不能使用 File API 读取档案。 URL.openStream() 可能工作
  • 我该如何使用它? URL 将只是文件名还是所有路径?没有 src 吗?!
【解决方案2】:

通常您会加载位于 jar 中的文件:InputStream is = this.getClass().getResourceAsStream("my/path/to.file");,但您必须小心,如果 jar 或 jar 所在的目录有空间,它有时会出错。我记得一年前试过这个。尝试重命名它的 jar 和它所在的文件。

他们也可能是 dir 权限的问题,尝试像管理员一样运行你的 jar

【讨论】:

  • 我的文件路径是"src\\sga\\facturation\\data.ser",但是解压时的jar,不包含src ....
  • @John Doe 在 src 你应该有你的 .class 文件,最后是 sga//factuarion/data.ser 或类似的东西:P 检查你的文件是否真的在你的 netbeans src 文件夹中
猜你喜欢
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 2021-12-10
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多