Java 从.jar加载文件时,URI不是分层的
因此,当从jar文件运行程序时,我在加载文件时遇到问题。我知道存在与此非常类似的问题,但我找不到任何适合我或做我需要的事情。我想从jar中的文件夹加载对象文件,但当我加载时,会出现以下错误: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
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
找到了解决问题的方法。谢谢你的帮助。