【发布时间】:2012-04-26 13:58:57
【问题描述】:
我正在尝试访问已嵌入 JAR 文件中的资源。需要访问文件的类是:
/worldEntities/factories/RoomFactory.class
它尝试访问:
/map-data/roomDescriptions.xml
为此,我在 RoomFactory.class 中添加了以下代码:
Document doc = docBuilder.parse(this.getClass().getResourceAsStream("/map-data" + File.separator + "roomDescriptions.xml"));
当我在 NetBeans 中执行项目时,它运行良好,没有错误。但是,当我尝试从命令行运行代码时,输入
java -jar Program.jar
我得到一个 java.lang.IllegalArgumentException: InputStream cannot be null,它指向我上面描述的代码。
提前感谢您的帮助,
托马斯
【问题讨论】:
-
如果您使用 File.separator,那么您应该始终如一地使用它,包括前导斜杠。另一方面,在 getResourceAsStream 调用中使用它是错误的,因为它不代表本机文件系统路径。只需使用斜线即可,保证跨平台。