(转)java之runnable jar与普通jar
背景:项目中有时候需要导出相关的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的更多相关文章
- 使用Eclipse把java文件打包成jar 含有第三方jar库的jar包
使用Eclipse把java文件打包成jar 含有第三方jar库的jar包 网上打包说用eclipse安装fat jar插件,但是貌似现在都不能用了,所以我只能按照eclipse自带的方法打包了. ...
- Java之 将程序打包成jar包
准备材料: 1.java文件: Helloworld.java package com.ray; public class HelloWorld{ public static void main(St ...
- 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. ...
- 用命令行编译java并生成可执行的jar包
用命令行编译java并生成可执行的jar包 1.编写源代码. 编写源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java.程序结构如下: ...
- java转换json需要导入的jar包,org/apache/commons/lang/exception/NestableRuntimeException
缺少相应jar包都会有异常,根据异常找jar包导入...... 这里我说下lang包,因为这个包我找了好半天: 我用的是: commons-lang3-3.1.jar 出现异常: jav ...
- java基础十[包、Jar存档文件和部署](阅读Head First Java记录)
将Java的class文件生成为可执行的Java应用程序.Java应用程序有三种:完全在本机执行的Jar(例如本机的GUI可执行程序):完全在服务器端远程执行的(例如浏览器来进行存取):介于两者之间的 ...
- 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 ...
- cmd运行java,含传参,引用jar
1,创建一个java project,完成编码 在Eclipse的资源管理器中选中你要打包的项目,右键点击,选择“导出”项,弹出导出对话框,在下面的Java目录下选择“JAR 文件”项,下一步,在导出 ...
- JAVA中RSS解析器(rome.jar和jdom.jar)范例
1.需要 jdom.jar 和 rome.jar 这两个包.2.创建一个项目,web.xml的内容如下: 代码如下 复制代码 <?xml version="1.0" enco ...
- Java SE Eclipse中引入第三方jar及class
使用eclipse开发Java SE 总免不了需要引入第三方的jar或者calss文件.这里给大家说一下如何在eclipse中引入第三方jar或者calss文件. 让我们先了解一下eclipse项目中 ...
随机推荐
- CentOS升级Python2.7导致使用pip等命令安装模块失败
报错如下: # pip Traceback (most recent call last): File , in <module> from pkg_resources import lo ...
- Eclipse中SVN设置文件为ignore后重新添加至版本控制
先前把需要版本控制的文件夹ignore了,用了很长时间找解决方法,结果发现竟如此简单,对eclipse的功能不熟悉啊. 方法如下: 在Window->Show View -> Naviga ...
- Bash中的特殊变量和位置参量
位置参量:向脚本或函数传递的参数,可以被set命令设置.重置和清空. 1.$$ 当前Shell的PID 2.$- 当前Shell的选项,如果是交互式shell,应该包含字符i,例如$ echo $-h ...
- [0] DDD领域驱动设计(二) 之 值对象
DDD中实体对象与值对象的解释比较抽象.主要根据持续性与 ID 识别来区分. ID并非某一对象的直观自然属性,而是在分析建模之 后,赋给模型中的实体类,来达到跟踪,区别,存储目的的一个特值. 结合项目 ...
- 第2章 系统用户/组管理(2) su和sudo
本文目录: 2.1 su 2.2 sudo 2.2.1 /etc/sudoers文件 2.2.2 sudo和sudoedit命令 2.1 su 切换用户或以指定用户运行命令. 使用su可以指定运行命令 ...
- C# 模拟浏览器请求
public string getHtml(string Url, string type = "UTF-8") { try ...
- easyUI的简单了解
首先简单的介绍一下jQuery EasyUI,它是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面.开发者不需要编写 ...
- IOS机型margin属性无效问题
这个问题很多小伙伴都有遇到,这次本猿也遇到了,记录一笔. 结论:简单的解决办法margin换padding!如有误,请大神不吝赐教.在Chrome浏览器移动端测试iphone5,打开的也是没问题的(这 ...
- Feign使用Hystrix无效原因及解决方法
最近项目重构使用了Spring Boot和Spring Cloud.这两者结合确实给项目带来了方便,同时也遇到了一些问题.其中使用feign作为服务消费,但是断路器hystrix一直不起作用让人很费解 ...
- Mongodb基础用法及查询操作[转载]
插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":&qu ...