Java 从.jar加载文件时,URI不是分层的

Java 从.jar加载文件时,URI不是分层的,java,io,uri,java-io,Java,Io,Uri,Java Io,因此,当从jar文件运行程序时,我在加载文件时遇到问题。我知道存在与此非常类似的问题,但我找不到任何适合我或做我需要的事情。我想从jar中的文件夹加载对象文件,但当我加载时,会出现以下错误: Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical at java.io.File.<init>(Unknown Source) at bbs

因此,当从jar文件运行程序时,我在加载文件时遇到问题。我知道存在与此非常类似的问题,但我找不到任何适合我或做我需要的事情。我想从jar中的文件夹加载对象文件,但当我加载时,会出现以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical
        at java.io.File.<init>(Unknown Source)
        at bbsource.BouncyBallV5.loadLevels(BouncyBallV5.java:370)
        at bbsource.BouncyBallV5.<init>(BouncyBallV5.java:243)
        at BBDriver.main(BBDriver.java:18)
线程“main”java.lang.IllegalArgumentException中的异常:URI不是分层的 位于java.io.File。(未知源) 位于bbsource.BouncyBallV5.loadLevels(BouncyBallV5.java:370) 在bbsource.BouncyBallV5。(BouncyBallV5.java:243) 位于BBDriver.main(BBDriver.java:18) 第370行如下

initSource=new文件(getClass().getResource(“/resources/levels”).toURI())

当从Eclipse运行时,我对这行代码没有任何问题,但我知道jar文件中的行为有所不同。文件夹层次结构是:

  • src
    • 资源
      • 水平
        • 第一层
          • 级别1.cbbl
          • 级别2.cbbl
        • 二级
          • 级别1.cbbl
levels是一个不允许我访问的目录,我不知道如何让它工作。我看到过一些建议,比如使用
InputStream
,但我不确定如何使用它,仍然将其视为一个可以读取对象的文件


任何帮助都将不胜感激。

这是因为
/resources/levels
是一个目录而不是一个文件。检查答案,这是因为
/resources/levels
是一个目录而不是一个文件。检查

的答案,我使用它作为一个目录来访问它的子目录,最终访问它的文件,但出于索引的原因,我需要类似目录的结构。我仍然不确定如何使用
InputStream
。请编写代码说明如何使用
initSource
help?尝试使用
initSource=new File(getClass().getResource(“/resources/levels”).getFile())
这在Eclipse中仍然有效,但在命令提示符下作为jar运行时仍然会出错。但是,这次的错误是一个
NullPointerException
。我通过使用.zip文件和
ZipInputStream
找到了解决问题的方法。谢谢你的帮助。我用它作为一个目录来访问它的子目录和最终的文件,但出于索引的原因,我需要类似目录的结构。我仍然不确定如何使用
InputStream
。请编写代码说明如何使用
initSource
help?尝试使用
initSource=new File(getClass().getResource(“/resources/levels”).getFile())
这在Eclipse中仍然有效,但在命令提示符下作为jar运行时仍然会出错。但是,这次的错误是一个
NullPointerException
。我通过使用.zip文件和
ZipInputStream
找到了解决问题的方法。谢谢你的帮助。