从类路径上的jar文件中的文件夹中读取文件



我有一个带有图形化编辑器(如GMF技术)的项目,我需要读取放置在项目类路径上的. jar库上的文件。

VectorSync_1.0.0.201403121100.jar的结构如下:

VectorSync:

  • 图标/VectorSync.gif
  • 模型/VectorSync.xml
  • 程序/VectorSync.java
  • meta - inf/MANIFEST。MF

导入.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>

我用这个方法尝试访问一个。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);

最新更新