【发布时间】:2009-04-27 00:32:22
【问题描述】:
我有一个作为 EAR 文件部署的 J2EE 应用程序,该文件又包含一个用于业务层代码(包括一些 EJB)的 JAR 文件和一个用于 Web 层代码的 WAR 文件。 EAR 文件部署到 JBoss 3.2.5,它解压了 EAR 和 WAR 文件,但不解压 JAR 文件(这不是问题,仅供参考)。
JAR 文件中的一个文件是一个 MS Word 模板,其绝对路径需要传递给一些本机 MS Word 代码(使用Jacob,FWIW)。
问题是,如果我尝试获取这样的文件(从 JAR 文件中的某些代码中):
URL url = getClass().getResource("myTemplate.dot");
File file = new File(url.toURI()); // <= fails!
String absolutePath = file.getAbsolutePath();
// Pass the absolutePath to MS Word to be opened as a document
... 然后java.io.File 构造函数抛出 IllegalArgumentException “URI 不是分层的”。 URL 和 URI 都有相同的 toString() 输出,即:
jar:file:/G:/jboss/myapp/jboss/server/default/tmp/deploy/tmp29269myapp.ear-contents/myapp.jar!/my/package/myTemplate.dot
这大部分路径在文件系统上是有效的,但其余的则不是(在 JAR 文件内部):
G:/jboss/myapp/jboss/server/default/tmp/deploy/tmp29269myapp.ear-contents
获取此文件的绝对路径的最简单方法是什么?
【问题讨论】:
标签: java file jakarta-ee path jar