错误 "java.lang.IllegalArgumentException: URI i s not hierarchical" 是什么意思?

What does the error "java.lang.IllegalArgumentException: URI i s not hierarchical" mean?

我有一个 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 Exception in thread "AWT-EventQueue-0 " java.lang.IllegalArgumentException: URI is not hierarchical at java.io.File.(Unknown Source) at com.simplediptool.DecodeButton1.actionPerformed(DecodeButton1.java:70)

   Line 70: File process_file = new File(url.toURI());

我哪里错了?

而不是使用

DecodeButton.class.getResource(......);

使用

DecodeButton.class.getResourceAsStream(........);

JAR 文件是一个包含许多资源的统一文件,就像 ZIP 或 WAR 文件一样。要访问单个资源,您需要将其视为流,因此请使用上面的内容。另一方面,在 eclipse 中,文件可以作为资源直接访问,因此它有效。

这将解决您的问题。