java - 尝试从另一个 jar 文件中的 jar 文件获取属性文件

标签 java properties executable-jar

我有一个用 Eclipse 构建的可执行 jar 文件 (A.jar),它依赖于该 jar 文件中包含的其他 jar 文件 (B.jar),并通过 jarinjarloader 访问。虽然这可以访问这些 jar 文件中的 java 代码,但当该代码调用时

InputStream inStream = <Class>.getClassLoader().getResourceAsStream(propFile);

找不到 B.jar 中包含的属性文件。该代码在 Eclipse 中运行时可以工作,因此我知道那里有正确的属性文件。

我尝试解压 A.jar,然后解压 B.jar,然后压缩合并的文件,但这不起作用。查看Manifest文件,Main-Class是org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

我可以对 list 文件进行一些更改(例如,向 Rsrc-Class-Path 添加一些内容)来使其正常工作吗? Rsrc-Class-Path 已经包含“./”,但这显然不允许属性加载器看到我的属性文件。

TIA,

格雷格

最佳答案

我还建议解决嵌套 jar 问题。我通常只是在 build.xml 中执行此操作来构建一个 jar,并将所有库解压到其中:

<target name="fatjar" depends="compile">
    <jar destfile="${isamjar}" filesetmanifest="mergewithoutmain">
            <manifest>
                    <attribute name="Main-Class" value="com.xyz.Main"/>
                    <attribute name="Class-Path" value="."/>
            </manifest>
            <fileset dir="./bin"/>
            <fileset dir="." includes="src/**"/>
            <zipfileset excludes="META-INF/*.SF" src="${l}/derby.jar"/>
            <zipfileset excludes="META-INF/*.SF" src="${l}/jconn3.jar"/>
            <zipfileset excludes="META-INF/*.SF" src="${l}/log4j-1.2.9.jar"/>
            <zipfileset excludes="META-INF/*.SF" src="${l}/${jar4j}"/>
    </jar>

关于java - 尝试从另一个 jar 文件中的 jar 文件获取属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963410/

相关文章:

java - 从命中/命中迁移到 TopDocs/TopDocCollector

iOS 访问parentViewController 中的属性

java - 为什么 Spring 项目导出的可运行 JAR 不能在另一个系统中工作?

java - java中获取资源(jar)路径

java - .jar 文件遇到困难

java - 如何制作 BufferedImage "fainter"?

java - Jaxb 注释 - 从 xml 元素中提取 xml 值

java - ImageView setScaleType 不工作

function - typescript 接口(interface) : function as property - or - this in interface implementations

objective-c - 错误 : writable atomic property cannot pair a synthesized setter/getter with a user defined setter/getter