java 打包jar文件实战
本文只介绍实用步骤,预备知识请自查阅:
参考资料:
http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html
http://www.skylit.com/javamethods/faqs/createjar.html
http://geeksun.iteye.com/blog/464690
http://stackoverflow.com/questions/18146361/how-to-create-jar-file-with-package-structure
-----------------------------------------------------------
一 未引用外部包的类文件打包:
1、例如我在目录:E:\eclipse 下创建helloworld.java:
public class helloworld {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello World!!");
}
}
cd /d e:\eclipse
2、编译helloworld.java:
e:\eclipse>javac helloworld.java
3、进行打包工作:
e:\eclipse>echo Main-Class: helloworld> manifest.txt
e:\eclipse>jar cvfm hello.jar manifest.txt helloworld.class
标明清单(manifest)
增加:helloworld.class(读入= 427) (写出= 290)(压缩了 32%)
e:\eclipse>java -jar hello.jar
Hello World!!
提醒:manifest.txt文件格式一定要注意:The text file must end with a new line(新起一行) or carriage return(回车)
二 引用外部包的类文件打包:
1、在路径:E:\eclipse\ftpTools\src 下有一个Hello.java 文件:
import org.apache.log4j.Logger;
public class Hello {
static Logger logger = Logger.getLogger(Hello.class);
public static void main(String[] args) {
// TODO Auto-generated method stub
logger.error("Hello world.");
logger.info("What a beatiful day.");
}
}
2、编译Hello.java:
E:\eclipse\ftpTools\src>javac -classpath lib\log4j-1.2.9.jar Hello.java
PS:两种方式配置classpath,①将引用的JAR包拷贝到JAVA_HOME\lib文件夹下,配置环境变量CLASSPATH,这样可直接javac Hello.java;
例如:;%JAVA_HOME%\lib\commons-net-3.3.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\commons-io-2.4.jar;%JAVA_HOME%\lib\log4j-1.2.9.jar
②编译时实用-classpath参数指定引用的JAR包路径;
3、进行打包工作:
3.1 创建好manifest.txt文件:
Manifest-Version: 1.0
Class-Path: lib\log4j-1.2.9.jar lib\commons-io-2.4.jar lib\commons-net-3.3.jar
Main-Class: Hello
3.2 运行JAR:
E:\eclipse\ftpTools\src>jar cvfm Hello.jar manifest.txt log4j.properties Hello.c
lass
标明清单(manifest)
增加:log4j.properties(读入= 1229) (写出= 380)(压缩了 69%)
增加:Hello.class(读入= 594) (写出= 378)(压缩了 36%)
E:\eclipse\ftpTools\src>java -jar Hello.jar
2013-12-15 14:50:01 ERROR Hello:12 - Hello world.
2013-12-15 14:50:01 INFO Hello:13 - What a beatiful day.
PS:此处实用的例子文件在一下链接可进行下载:
http://download.csdn.net/detail/indexman/6717405
---------------------------------
Dylan presents.
java 打包jar文件实战的更多相关文章
- Java 图片爬虫,java打包jar文件
目录 1. Java 图片爬虫,制作 .jar 文件 spider.java 制作 jar 文件 添加执行权限 1. Java 图片爬虫,制作 .jar 文件 spider.java spider.j ...
- java 打包jar文件以在没有安装JDK或JRE的机子上运行
前言: java号称“一次编译,到处运行”,但这有个前提,那就是你的机子上得安装java环境.对于开发人员或其他一些比较懂计算机的人来说这没什么,但是对于一些不懂计算机的人来说这会很麻烦,他们更希望的 ...
- Intellij打包jar文件,“java.lang.SecurityException: Invalid signature file digest for Manifest main attrib
下面是使用Intellij 打包jar文件的步骤,之后会有运行jar文件时遇到的错误. 打包完成. ================================================== ...
- Eclipse将android项目打包jar文件
Eclipse+android打包jar文件 蔡建良 2016-3-12 以Android-SlideExpandableListView开源框架为例,将源码Library打包成jar文件并包含R.c ...
- 关于在打包Jar文件时遇到的资源路径问题(二)
在关于<关于在打包Jar文件时遇到的资源路径问题(一)>中,以及描述了当资源与可执行JAr分离时的资源路径代码的编写问题,后来想了想,为什么将<Java核心技术卷一>中的程序1 ...
- Java的jar文件安装成windows 服务
Java的jar文件安装成windows 服务: 1.下载:nssm,复制到jar文件目录下 2. jar文件目录下创建bat文件[run.bat],内容为[java -jar 文件名.jar] 3. ...
- 关于在打包Jar文件时遇到的资源路径问题(一)
当我们将程序写好,并进行打包成Jar文件时,通常都带有各种资源,这些资源可以是图像或者声音文件,也可以是别的如文本文件或二进制文件等,这些资源都和代码密切相关.例如在一个JPanel类上显示一些可能变 ...
- AndroidStduio3.0 使用gradle将module打包jar文件
AndroidStduio3.0使用gradle将module打包jar文件,首先需要安装gradle. 打开控制台输入 open -e .bash_profile 命令,就可以打开 ...
- Java 执行jar文件出现版本错误信息
Java 执行jar文件出现版本错误信息 一.问题 执行jar文件出现如下错误信息: 二.解决方案 是因为在创建工程的时候选择的jdk编译版本,和执行jar环境的jdk版本不一致: 更改工程的jdk版 ...
- 打包jar文件 外部调用资源 so等
一个非常好的从jar文件中加载so动态库方法,在android的gif支持开源中用到.这个项目的gif解码是用jni c实现的,避免了OOM等问题. 项目地址:https://github.com/k ...
随机推荐
- 第二章 VB.NET 绘图基础
GDI+( Graphics Device Interface Plus)是 Windows操作系统用来执行绘画及其他相关图形操作的一套子系统,是由. Net Framework中的System.Dr ...
- [转帖]038-拯救大兵瑞恩之 TiDB 如何在 TiKV 损坏的情况下恢复
https://tidb.net/blog/4b5451bb?utm_source=tidb-community&utm_medium=referral&utm_campaign=re ...
- [转帖]Linux——Shell脚本参数传递的2种方法
https://www.cnblogs.com/caoweixiong/p/12334418.html 前言 平时会遇到很多脚本都有参数选项,类似: ./test.sh -f config.conf ...
- 【转帖】nginx变量使用方法详解-7
https://www.diewufeiyang.com/post/581.html 在 (一) 中我们提到过,Nginx 变量的值只有一种类型,那就是字符串,但是变量也有可能压根就不存在有意义的 ...
- [转帖]Linux-计算毫秒数
https://www.cnblogs.com/yeyuzhuanjia/p/15822653.html date +%s返回自划时代以来的秒数. date +%s%N返回秒数+当前纳秒数. 因此,e ...
- [转帖]ansible 安装 K8S
作者:山河已无恙链接:https://www.zhihu.com/question/315497851/answer/2898814729来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...
- [读书笔记]SQLSERVER企业级平台管理实践读书笔记--从等待事件判断性能瓶颈
用到的系统试图主要有: select * from sys.dm_os_wait_statsselect * from sys.sysprocessesselect * from sys.dm_exe ...
- Go 泛型之明确使用时机与泛型实现原理
目录 一.引入 二.何时适合使用泛型? 场景一:编写通用数据结构时 场景二:函数操作的是 Go 原生的容器类型时 场景三:不同类型实现一些方法的逻辑相同时 三.Go 泛型实现原理 Stenciling ...
- 即时通讯(IM)开源项目OpenIM每周迭代版本发布-音视频实时通话-v2.0.4
介绍 OpenIM每周五发布新版,包括新特性发布,bug修复,同时合并PR 由于2.0版本重构完毕,架构更清晰,代码更规范,先邀请各位参与OpenIM社区建设,包括技术开发,技术分享等,特性开发,性能 ...
- TienChin 活动管理-搜索活动
ActivityController @PreAuthorize("hasPermission('tienchin:activity:list')") @GetMapping(&q ...