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