【发布时间】:2015-05-13 17:18:25
【问题描述】:
我有一个 java 应用程序,它使用 xml 文件解码图像上的信息。 xml 文件位于最顶层的包中。这是我用来获取文件的代码
java.net.URL url = DecodeButton.class.getResource("/text.xml");
File process_file = new File(url.toURI());
代码在eclipse中运行正常。当我创建 jar 并按下解码按钮执行解码时,这是错误:
jar:file:/C:/simple3.jar!/text.xml 线程异常 “AWT-EventQueue-0” java.lang.IllegalArgumentException:URI 不是 分层的 在 java.io.File.(未知来源) 在 com.simplediptool.DecodeButton1.actionPerformed(DecodeButton1.java:70)
Line 70: File process_file = new File(url.toURI());
我哪里出错了?
【问题讨论】:
-
您似乎在 Windows 上运行它。尝试将 unix 文件分隔符“/”替换为 Windows 文件分隔符“\”。
-
它在 Eclipse 中运行良好,因为在 Eclipse 中,您的类和资源驻留在本机文件系统中。打包到 jar 中时,资源不是普通文件,因此您不能将它们的 URL(在异常消息中看到的
jar:URL)转换为File对象——它们不是文件。 -
但在这种情况下,它甚至不会在 Eclipse @DavisBroda 中编译
-
@Holger:那怎么解决呢?
-
没有办法为不是文件的东西创建
File对象。但这是一个“XY 问题”;问题是为什么你认为你需要File,换句话说,你的实际问题是什么。