背景:项目中有时候需要导出相关的jar包,可是总是不能分清楚。

1 导出包

导出普通jar包(可作为第三方库,类似dll,so等)

在eclipse中右键选择except->java->jar file。

导出可运行的jar包(可以双击运行,类似exe文件)

在eclipse中右键选择except->java->Runnable jar file。

可运行的jar包是需要jre环境的有两种方式可以解决这个问题

1.在目标机上安装jre环境(例如装jdk),并配置环境变量(一般是path变量值是jre的bin目录路径),是否成功,在dos中直接java能识别为止。

2.jre和jar一块发布,在写一个bat文件用随带的jre运行jar,也可用本地写一个exe在里面执行dos命令。

3.把jar转换成exe文件(虽然转成exe,运行还是需要jre环境的),在jar转exe时可以指定jre的路径,我们可以然exe和jre放到一个目录中一块交给用户。工具exe4j(install4j和exe4j是一块的功能更多),Jsmooth。(教程参见 http://wenzongliang.iteye.com/blog/2144703

1.1 导出jar包

详细过程:
(1). 首先在Eclipse中打开项目, 右键点击项目,选择“Export”;

(2). 选择Java/JAR file(导出可运行的选择Java/Runnable 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,搞定。

1.2 两个jar包之间的区别

普通jar与可运行的jar差别:

创建可执行的JAR包关键在于:让java命令知道JAR包中哪个是主类(有main方法的那个类,开始运行的那个类),javaw命令可以通过该主类来运行程序,这就需要借助清单文件,需要在清单文件中增加如下一行:

Main-Class: accp.ui.Test2

注意这个文件格式要求非常严格:

Main-Class:<空格>包名.类名<回车>  注意后面必段有一个回车。

MANIFEST.MF文件:

l  每行只能定义一个key-value对,每行必须顶格写。

l  每组key-value之间以: (英文冒号后紧跟一个英文空格)。

l  文件开头不能有空行。

l  文件必须以一行空行结束。

1.3 实验代码

做实验的代码

public class Week_9{  
    public static void main(String args[]){  
        JFrame frame = new JFrame("Java表格") ;  
        String[] titles = {"姓名","年龄","性别"} ;        //表格标题  
        Object [][] userInfo = {  
            {"小强",30,"男"} ,  
            {"小明",23,"女"}   
        } ;                                             // 初始化数据  
        JTable table = new JTable(userInfo,titles) ;    // 建立表格  
        JScrollPane scr = new JScrollPane(table) ;      //用可滚动的JScrollPanel来包装JTable  
        frame.add(scr);                                 //将JScrollPanel添加进窗口中  
        frame.setSize(400, 200);  
        frame.setLocation(300, 50);  
        frame.setVisible(true);  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    }

}

(转)java之runnable jar与普通jar的更多相关文章

  1. 使用Eclipse把java文件打包成jar 含有第三方jar库的jar包

    使用Eclipse把java文件打包成jar 含有第三方jar库的jar包   网上打包说用eclipse安装fat jar插件,但是貌似现在都不能用了,所以我只能按照eclipse自带的方法打包了. ...

  2. Java之 将程序打包成jar包

    准备材料: 1.java文件: Helloworld.java package com.ray; public class HelloWorld{ public static void main(St ...

  3. eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN

    eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...

  4. 用命令行编译java并生成可执行的jar包

    用命令行编译java并生成可执行的jar包 1.编写源代码. 编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java.程序结构如下: ...

  5. java转换json需要导入的jar包,org/apache/commons/lang/exception/NestableRuntimeException

    缺少相应jar包都会有异常,根据异常找jar包导入......     这里我说下lang包,因为这个包我找了好半天:   我用的是: commons-lang3-3.1.jar  出现异常: jav ...

  6. java基础十[包、Jar存档文件和部署](阅读Head First Java记录)

    将Java的class文件生成为可执行的Java应用程序.Java应用程序有三种:完全在本机执行的Jar(例如本机的GUI可执行程序):完全在服务器端远程执行的(例如浏览器来进行存取):介于两者之间的 ...

  7. Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError

    SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackO ...

  8. cmd运行java,含传参,引用jar

    1,创建一个java project,完成编码 在Eclipse的资源管理器中选中你要打包的项目,右键点击,选择“导出”项,弹出导出对话框,在下面的Java目录下选择“JAR 文件”项,下一步,在导出 ...

  9. JAVA中RSS解析器(rome.jar和jdom.jar)范例

    1.需要 jdom.jar 和 rome.jar 这两个包.2.创建一个项目,web.xml的内容如下: 代码如下 复制代码 <?xml version="1.0" enco ...

  10. Java SE Eclipse中引入第三方jar及class

    使用eclipse开发Java SE 总免不了需要引入第三方的jar或者calss文件.这里给大家说一下如何在eclipse中引入第三方jar或者calss文件. 让我们先了解一下eclipse项目中 ...

随机推荐

  1. MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?

    本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...

  2. 【知识整理】这可能是RxJava 2.x 最好的入门教程(一)

    一.前言 RxJava 对大家而言肯定不陌生,其受欢迎程度不言而喻.而在去年的早些时候,官方便宣布,将在一段时间后不再对 RxJava 1.x 进行维护,而在仓库中另辟蹊径,开始对 RxJava 2. ...

  3. Vin码识别(车架号识别)技术,摆脱手动录入提高工作效率

    本文主题:Vin码识别(车架号识别)技术,摆脱手动录入提高工作效率 本文关键词:Vin码识别,汽车Vin码识别,车架号识别,汽车车架号识别,车代码识别,车代号识别 本文主旨:一.Vin码(车架号)在什 ...

  4. 原生js实现Ajax的原理。

    Ajax(Asynchronous JavaScript and XML)表示异步的js与xml. 有别于传统web的同步开发方式. 原理:通过XMLHttpRequest对象向服务器发送异步请求,从 ...

  5. java 生产者 与 消费者的案例

    主要理解了两个问题 1.线程数据同步的问题 2.线程交替运行的方式 package ThreadDemo; /** * 生产者与消费者的案例(一,同步的问题,值的问题 二,交替执行的问题) * @au ...

  6. java编码详解

    举个例子 我们在开发过程中,特别是多种编码格式并存的情况下,很容易遇到乱码问题. 假如有一个GBK编码java文件,然后再使用-Dfile.encoding=GBK参数,写入的文件中哪些是乱码呢.那如 ...

  7. 从一道例题谈Arrays.toString()与其他String的转换方法

    阅读该篇文章前,请大家事先阅读一下:   java.toString(),(String),String.valueOf的区别 有了上述基础后,我接下来谈谈从一道题目中获得的些许收获. 今天在做题是发 ...

  8. 从Owin到System.Web.Http.Owin的HttpMessageHandlerAdapter看适配器模式

    .mytitle { background: #2B6695; color: white; font-family: "微软雅黑", "宋体", "黑 ...

  9. php中的捕获异常操作

    <?php if(!isset($_SESSION)){ session_start(); } include '../common/mysql.class.php'; include '../ ...

  10. Window文件目录挂载(mount)到linux系统目录下

    1.先在windows下面共享需要挂载的目录. 2.确保linux与windows是在同一个局域网当中. 3.在linux下面创建一个需要挂载到的目录. 4.然后点击"添加",建立 ...