使用其他库创建库jar

时间:2014-04-24 14:18:26

标签: exception jar java

我通过eclipse创建jar,但不是runnable jar,它只是一个库。导入后我正在创建新项目并添加此jar文件。但是当运行应用程序时,它会抛出异常,因为找不到我jar中的库。但是这些库包含在创建的jar中。我的错误在哪里?我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

默认情况下,您不能在JAR文件中包含依赖JAR文件,您需要一个插件,如Classpath including JAR within a JAR中所指定(由Artur Malinowski建议)。但是,如果您希望创建一个仅与其他依赖项一起使用的JAR,则可以通过右键单击项目,进入属性,Java Build Path,Libraries轻松地通过Eclipse完成此操作,然后您可以添加JAR等。使用菜单右侧的按钮(从Kepler开始)。

我希望这会有所帮助。

P.S。无论在哪里放置主JAR,都必须将依赖JAR文件包装起来,但是,这是最简单,最直接的方法,首先让它工作,然后使用构建插件进行优化。

答案 1 :(得分:0)

我找到了解决方案。我写了一些用于创建jar的ant脚本,它解决了我的问题。

<target name="dist" depends="build-jar">


    <property name="store.jar.name" value="MYJARNAME"/>

    <property name="store.dir" value="store"/>
    <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>

    <echo message="Packaging project into a single JAR at ${store.jar}"/>

    <mkdir dir="dist"/>
    <delete dir="${store.dir}"/>
    <mkdir dir="${store.dir}"/>
    <mkdir dir="dist/lib"/>
    <copy todir="dist/lib/" overwrite="false" granularity="9223372036854">
        <fileset dir="lib/"/>
    </copy>
    <jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
        <zipgroupfileset dir="dist" includes="*.jar"/>
        <zipgroupfileset dir="dist/lib" includes="*.jar"/>

        <manifest>
            <attribute name="Main-Class" value="${main.class}"/>
        </manifest>
    </jar>

    <zip destfile="${store.jar}">
        <zipfileset src="${store.dir}/temp_final.jar"
        excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
    </zip>

    <delete file="${store.dir}/temp_final.jar"/>

</target>