一般的jar包导出用export,选择资源,可运行的选择下main类,就可以了。但是要含有第三方的jar包就不行了。
eclipse的专门打jar包的一个插件fat jar,安装插件后,多了个菜单build fat jar选项,期间要勾选第三方的jar包,最后输出jar包。
很是不解的我于是就想探个究竟,为什么开始我怎么配置都无法运行了! 于是我就将 fat jar 打包出来的jar包解压缩后翻了一遍,顿时无语了。fat jar 狠的我无语了,直接将第三方jar包给解压了,然后统统放在目标jar包中,这样的话的确不会出现开始的错误
另一个方法,用ant的也可以解决问题
<path id="compile.classpath">
<fileset dir="lib">
<include name="*.jar" />
</fileset>
</path>
<target name="init" depends="clean">
<mkdir dir="${dest.dir}" />
</target>
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${dest.dir}" encoding="UTF-8" includeantruntime="false">
<classpath refid="compile.classpath" />
</javac>
</target>
<target name="jar" depends="compile">
<echo>${jar.file}</echo>
<jar basedir="${dest.dir}" destfile="${jar.file}">
<manifest>
<attribute name="Main-Class" value="${main.class}" />
<attribute name="Class-Path" value="" />
</manifest>
<zipfileset src="lib/ant-launcher.jar" excludes="META-INF/*" />
<zipfileset src="lib/ant.jar" excludes="META-INF/*" />
</jar>
</target>
<target name="clean">
<delete dir="${dest.dir}"/>
<delete file="${jar.file}"/>
</target>
其中<zipfileset>标签的src就是jar的地址。
ps:输出的jar包想在jar的同目录下读取配置,可以通过System.getProperty("user.dir")来获取当前运行的路径。
this.getClass .getResource("").getPath这个包含packagename。