我在jar文件Test1中包含了jar文件Test2,我执行了Test1。当我尝试使用java.awt.Desktop
执行Test2时,我收到java.lang.IllegalArgumentException: URI is not hierarchical
异常和消息。当我将Test2与Test1分开时(即不同文件夹中的Test2),我可以成功地完成它,并像下面那样访问它:
Desktop.getDesktop().open(new File("path-to-file\\Test2.jar"));
我可以从我的IDE中执行以下操作,没有任何问题:
Desktop.getDesktop().open(new File(Test.class.getResource("Test2.jar").toURI()));
当我使用上面的代码行运行jar文件Test1时,我遇到运行Test2的问题。
通过研究,我了解到你必须做InputStream is = Test.class.getClassLoader().getResourceAsStream(...);
之类的事情。然而,我无法弄清楚是什么,如果有的话,你必须使用这个InputStream
从jar中成功执行一个jar,或者这个{ {1}}确实使URI成为分层结构。到目前为止,这是我提出的(我不知道我的第一个文件是否正确):
InputStream
有人能说清楚这个吗?