我有一个J2EE应用程序作为EAR文件部署,而EAR文件又包含用于业务层代码(包括一些EJB)的JAR文件和用于Web层代码的WAR文件。 EAR文件被部署到JBoss 3.2.5,它解压缩EAR和WAR文件,但不包括JAR文件(这不是问题,仅仅是供参考)。在EAR中获取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
获取此文件绝对路径的最简单方法是什么?
当我发现这个问题,我的第一想法是“是的,也许唯一的办法是写一个临时文件!”。令人惊讶的是,这是唯一的方法!怎么可能无法在jar中处理路径?如果你能得到流,你可以在完美的世界中获得文件。 – 2011-03-10 16:00:55