zoukankan      html  css  js  c++  java
  • 将java源码打成jar包

    文章原地址:

    http://blog.csdn.net/wangpeng047/article/details/7176024

    http://www.cnblogs.com/tianguook/archive/2012/03/14/2396335.html


    方法一:通过jar命令

    jar命令的用法:

    下面是jar命令的帮助说明:

    用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...

    选项包括:

        -c  创建新的归档文件

        -t  列出归档目录

        -x  解压缩已归档的指定(或所有)文件

        -u  更新现有的归档文件

        -v  在标准输出中生成详细输出

        -f  指定归档文件名

        -m  包含指定清单文件中的清单信息

        -e  为捆绑到可执行 jar 文件的独立应用程序,指定应用程序入口点

        -0  仅存储;不使用任何 ZIP 压缩

        -M  不创建条目的清单文件

        -i  为指定的 jar 文件生成索引信息

        -C  更改为指定的目录并包含其中的文件

    如果有任何目录文件,则对其进行递归处理。清单文件名、归档文件名和入口点名的指定顺序与 "m"、"f" 和 "e" 标志的指定顺序相同。

    示例 1:将两个类文件归档到一个名为 classes.jar 的归档文件中:

    jar cvf classes.jar Foo.class Bar.class

    示例 2:使用现有的清单文件 "mymanifest" 并将 foo/ 目录中的所有文件归档到 "classes.jar" 中:

    jar cvfm classes.jar mymanifest -C foo/ .

    一、打包成一般的jar包

    输入如下命令即可:

    [plain] view plaincopy
    1. jar cvf counter.jar -C bin .  

    二、打包成可运行的jar包

    要打包成可运行的jar包,需要在MANIFEST.MF文件中指定主类,以Java源代码行数统计程序的打包为例,演示如何打包:

    1)首先编辑MANIFEST.MF文件,内容如下:

    [plain] view plaincopy
    1. Manifest-Version: 1.0  
    2. Created-By: rsljdkt  
    3. Class-Path: .  
    4. Main-Class: Main  

    说明:

      第一行指定清单的版本,若无,则JDK默认生成:Manifest-Version: 1.0。

      第二行指明创建的作者,若无,则JDK默认生成Created-By: 1.6.0_22(Sun Microsystems Inc.)。

      第三行指定主类所在类路径。

      第四行指明程序运行的主类。

    2)使用jar命令进行打包:

    [plain] view plaincopy
    1. jar cvfm counter.jar MANIFEST.MF -C bin .  

    说明:

      参数f:指定打包后的包名。

      参数m:指定自定义的MANIFEST.MF清单文件,否则,JDK会自动生成不包含Main-Class的默认清单。

      参数c:指定是创建新的归档文件。

      参数v:在标准输出中生成详细输出,该选项是可选的。

    方法二:使用Eclipse的Export功能:

    一、打包成一般的jar包:

    步骤如下:

      1)在要打包的项目上右击,选择Export。

      2)在弹出的窗口中,选择Java -> JAR File,然后点击next按钮。

      3)在JAR File Specification窗口中,设置打包成的文件名和存放位置,点击两侧next。

      4)在JAR Manifest Specification窗口中,设置MANIFEST.MF清单文件的配置,若仅仅打包成单纯的jar包的话,不用做任何修改,采取默认即可,若打包成可执行jar包的话,可以使用已存在的MANIFEST文件或者直接选择Main class。

      5)点击Finish按钮,完成打包。

    二、打包成可运行的jar包

    步骤如下:

      1)在要打包的项目上右击,选择Export。

      2)在弹出的窗口中,选择Java -> Runnable JAR File,然后点击next按钮。

      3)在Runnable JAR File Specification窗口中,选择Launch configuration和Export destination。

      4)点击Finish按钮,打包完成。


    java项目打jar包分为2种情况:

    一、java项目没有导入第三方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. 下一个页面里可以对项目做一些配置。(如果项目没有引入第三方jar包,这项我们采用系统默认的选项就OK,Main class一定要设置成为你项目的那个主方法入口类)
        * Generate the manifest file是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
        * Use existing mainfest from workspace。这是可以选择我们自定义的.MF文件,格式如上所写。
        * Seal content。要封装整个jar或者指定的包packet
        * Main class。这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。
    最后Finish,搞定。 ......

     

    二、java项目有导入第三方Jar包(例如项目中有导入sqlserver2005.jar包)

    这时候打包就相对复杂一点:

    前面的4步和上面的情况是一样,只是第5步需要选择Use existing mainfest from workspace选项,并选择你自己创建的一个MANIFEST.MF文件,因为系统默认选择的是Generate the manifest file选项,而该选项不会将项目用到得第三方jar包打入到java项目生成的jar包中去。

    自定义配置文件MANIFEST.MF :

    首先在项目的根目录下创建一个MANIFEST.MF文件

    接下来用记事本打开该文件,并编辑:

    例如:
    Manifest-Version: 1.0
    Main-Class: StudentManager_Test
    Class-Path: sqlserver2005.jar
    其中的Manifest-Version是指程序的版本号,Main-Class是指程序的主方法入口类,slass-Path就指定了外来jar包的位置。请注意假设我们的项目打包后为project.jar,那么按照上面的定义,应该在 project.jar的同层目录下有相关的jar包(即sqlserver2005.jar,如果有引入多个第三方jar包,则可以用空格隔开)放在里面。否则将会出现Exception in thread "main" java.lang.NoClassDefFoundError的错误。



  • 相关阅读:
    获取app下载链接
    查找文件的路径
    回忆基础:制作plist文件
    Ping++中的AlipaySDK和AlicloudUTDID冲突解决方案
    CocoaPods常用操作命令
    自签名配置HTTPS
    Instruments10 分析某个类中方法的执行时间
    iOS KVC/KVO
    iOS 系统架构及常用框架
    LINQ to SQLite完美解决方案
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5232996.html
Copyright © 2011-2022 走看看