从classpath中的jar文件里的文件夹读取文件
问题描述:
我有一个图形编辑器(如GMF技术)的项目,我需要读取放在项目类路径上的.Jar库上的文件。从classpath中的jar文件里的文件夹读取文件
的VectorSync_1.0.0.201403121100.jar具有如下的结构:
VectorSync:
- 图标/ VectorSync.gif
- 模型/ VectorSync.xml
- 程序/ VectorSync.java
- META-INF/MANIFEST.MF
其中i进口.jar文件的项目的.classpath是:
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="/home/jperezmedina/git/arom/arom-core/target/scala-2.9.0/aromslave_2.9.0-0.1.jar"/>
<classpathentry kind="lib" path="/home/jperezmedina/runtime-EclipseApplication/DefaultProject.arom/lib/VectorSync_1.0.0.201403121100.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
我用这个方法来尝试ACCES一个.xml文件:
JarFile file = new JarFile("VectorSync_1.0.0.201403121100.jar");
BufferedReader input1 =
new BufferedReader(new InputStreamReader(file.getClass().
getClassLoader().getResourceAsStream("model/VectorSync.xml")));
但这种方法使用返回所有时间null
。
你能帮我解决这个问题吗?
谢谢
答
如果你看看JarFile
,你会发现,它为您提供了API,这样做
JarFile file = new JarFile("VectorSync_1.0.0.201403121100.jar");
ZipEntry entry = file.getEntry("model/VectorSync.xml");
BufferedReader input1 = new BufferedReader(
new InputStreamReader(file.getInputStream(entry)));
答
你试过这种方法吗?
Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);
+0
感谢您的回答,但它不适用于我的项目 – user3410517
检查这更多的相关信息,如果你的作品给予好评;) 的http://计算器.com/questions/22203162/images-not-loading-when-running-jar-file/22203605#22203605 – robermann