[ant] 在Eclipse中将Java项目打包为jar

cuisuqiang 2013-07-01
如果自己的java project中需要引用额外的jar包作为资源文件,那么需要自己自定义配置文件MANIFEST.MF ,内容示例如下:

Manifest-Version: 1.0
Class-Path: lib\crimson.jar lib\jbcl.jar lib\junit.jar lib\log4j-1.2.13.jar lib\mysql-connector-java-3.1.13-bin.jar
Main-Class: src.YourMainClassName

其中的Class-Paht就指定了外来jar包的位置。请注意假设我们的项目打包后为project.jar,那么按照上面的定义,应该在 project.jar的同层目录下建立一个lib文件夹,并将相关的jar包放在里面。否则将会出现Exception in thread "main" java.lang.NoClassDefFoundError的错误。

最后介绍一下使用Eclipse制作jar包的过程吧:

1. 首先在Eclipse中打开项目, 右键点击项目,选择“Export”;

2. 选择Java/JAR file,Next;

3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间;

这里有几个选项:

    * Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
    * Export all output folders for checked projects 表示导出选中项目的所有文件夹
    * Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了
    * Export refactorings for checked projects 把一些重构的信息文件也包含进去

在Select the export destination中选择导出的jar的路径,Next

4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class文件。一般不用理他,Next

5. 下一个页面里可以对项目做一些配置。

    * Generate the manifest file是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
    * Use existing mainfest from workspace。这是可以选择我们自定义的.MF文件,格式如上所写。
    * Seal content。要封装整个jar或者指定的包packet
    * Main class。这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。

最后Finish,搞定
cuisuqiang 2013-07-01
运行jar文件 cmd --进到该目录--java -jar XX.jar
cuisuqiang 2013-07-01
默认安装JDK后该文件是以Java运行的,但是不排除有人已经修改了其默认打开方式

1.进入“我的电脑”——〉“工具”——〉“文件夹选项”——〉“文件类型”——〉找到JAR类型文件

2.“高级”——〉选择“操作”中的open ——〉“编辑”——〉新建操作open,在“用于执行操作的应用程序”里输入
"C:\Program Files\Java\jre1.6.0_06\bin\javaw.exe"  -jar  "%1"  %*

(注意:引号需要,java虚拟机路径根据情况修改) ——〉“确定”
usench 2013-07-03
[b][/b][u][/u]
引用
[img][/img][url][/url][flash=200,200][/flash]
lenozhi 2013-07-03
写个build.xml脚本,在eclipse下执行就得了。
<?xml version="1.0" encoding="GB2312" ?>
<project name="tscms"   default="jar" basedir=".">
     <property file="build.properties"/>
 
 	     <property file="build.properties"/> <!--编译属性文件,跟具体项目相关-->
       <property name="jar-file-name"      value="${project-name}" /> <!--jar文件名-->
	  	 <property name="project-name" value="${project-name}"/><!--项目名称-->
       <property name="build" value="build"/><!--编译根目录-->
       <property name="lib" value="lib"/><!--编译依赖库-->
       <property name="src" value="src"/><!--源代码-->
       <property name="build.classes"      value="${build}/classes" /><!--编译源码目录-->
       <property name="jar.dir"     value="jar"/><!--jar生成位置-->
	     <property name="org.dir"     value="org"/><!--spring相关XSD文件-->
	<!-- <property name="hbm.dir.dest" value="net/tscms/ftp/ftplet/vo"/>目标hibernate hbm文件位置
			 <property name="hbm.dir.src"     value="src/${hbm.dir.dest}"/>源hibernate hbm文件位置-->

   <property name="jar.dir"     value="jar"/>
   <!--生成jar MANIFEST.MF 中lib字段-->
	 <pathconvert property="libs.project" pathsep=" ">
      <mapper>
       <chainedmapper>
         <!-- remove absolute path -->
         <flattenmapper />
         <!-- add lib/ prefix -->
         <globmapper from="*" to="lib/*" />
       </chainedmapper>
     </mapper>
     <path>
       <!-- lib.home contains all jar files, in several subdirectories -->
       <fileset dir="${lib}">
        <include name="**/*.jar" />
       </fileset>
    </path>
   </pathconvert>

			<!--依赖jar包-->
	    <path id="Third-Part Lib">
            <fileset dir="${lib}">
                  <include name="**/*.jar" />
            </fileset>
      </path>

		  <!--准备工作:建目录、清理-->
      <target name="prepare" >
      	 <echo message="2.开始建目录......"/>
            <mkdir dir="${build.classes}" />
            <mkdir dir="${jar.dir}" />
      </target>

      <target name="clean" >
      	 <echo message="1.开始清理......"/>
            <delete dir="${build}" />
            <delete dir="${jar.dir}" />
      </target>
 
			<!--编译src-->
      <target name="compile" depends="clean,prepare">
	      <echo message="3.开始编译......"/>
	            <javac
	                  srcdir="${src}"
	                  destdir="${build.classes}"
	                  failonerror="true" debug="true"				
					  				target="1.5"
					    >
	            <compilerarg line="-encoding UTF-8 "/>   
							<classpath refid="Third-Part Lib"/> 
	            </javac>
      </target>
      
    <target name="dirPrepare">
    	 <echo message="4.准备打包相关文件、目录......"/>
    	    <!--准备META-INF中需要的文件-->
	      <mkdir dir="${build.classes}/META-INF"/>
	      <copy todir="${build.classes}/META-INF">
	      	<fileset dir="META-INF"/>
	      </copy>
	      
	      <!--准备spring的xsd-->
	      <mkdir dir="${build.classes}/org"/>
	      <copy todir="${build.classes}/org">
	      	<fileset dir="${org.dir}"/>
	      </copy>
	      
	      <!--准备hbm文件
	      <copy todir="${build.classes}/${hbm.dir.dest}">
	      	 <fileset dir="${hbm.dir.src}"/>
	      </copy>-->
	  </target>
      
   <!--打jar包-->
    <target name="jar" depends="compile,dirPrepare">
    	<echo message="5.开始打包......"/>
    				<tstamp></tstamp>
            <jar destfile="${jar.dir}/${jar-file-name}-${version}.jar" basedir="${build.classes}" includes="**">
                  <manifest>
                        <!-- 此处需要根据需要进行修改 -->
                        <attribute name="Main-Class" value="${main-class}"/>
                        <attribute name="Class-Path" value="${libs.project}"/> 
                  </manifest>
            </jar>
      </target>

</project>
qbibnmdb 2013-07-03
还在为Class Not Found烦恼么? 试试 http://www.boyunjian.com/do/jarse/index.html?f=1

输入类名即可查找JAR包,超方便.
alang123 2013-07-05
MF文件写好了很简单
suncf1985 2013-07-05
有个插件很好用啊..fat_jar
wzjin 2013-07-07
suncf1985 写道
有个插件很好用啊..fat_jar

以前一直用这个插件,尤其做swing开发。
basakasky 2013-07-08
用过maven打包以后觉得很方便啊
Global site tag (gtag.js) - Google Analytics