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 ...
随机推荐
- WebApi使用Swagger
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API ...
- spring——DI_依赖注入
Spring的注入方式 Dependency Injection 概念 依赖注入(Dependency Injection) 依赖:指Bean对象的创建依赖于容器,Bean对象的依赖资源 注入:指Be ...
- [转帖]ramdisk三种实现方式
https://www.jianshu.com/p/c14cee74fa0a Ramdisk/ramfs/tmpfs Ramdisk:大小固定,默认4096k.在编译内核的时候需将block devi ...
- 【转帖】SQUID TIME_WAIT值过高引起的服务器被拖慢
https://www.diewufeiyang.com/post/895.html 查看TCP的连接状态值: # netstat -n | awk '/^tcp/ {++S[$NF]} END {f ...
- [转帖]linux时间戳转换成时间指令_时间戳转换公式
原文地址:http://wanping.blogbus.com/logs/28663569.html 1.时间戳转换为正常显示的时间格式 Freebsd 系统下: 转换命令为: date -r 111 ...
- mysql 的outfile以及infile 语法简单备份恢复表
今天学习 姜老师的 mysql技术内存innodb存储引擎时看到了有一个outfile和infile的语法,感觉挺好的, 这里面进行一下简单的学习与验证. oufile 可以到处文件 infile 可 ...
- 【k哥爬虫普法】爬取数据是否一定构成不正当竞争?
我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...
- k8s 中的网络
k8s 中的网络模型 CNI 网络插件 CNI 的设计思想 k8s 中的三层网络 Flannel 的 host-gw Calico 参考 k8s 中的网络模型 CNI 网络插件 docker 容器的网 ...
- 领域知识图谱的医生推荐系统:利用BERT+CRF+BiLSTM的医疗实体识别,建立医学知识图谱,建立知识问答系统
领域知识图谱的医生推荐系统:利用BERT+CRF+BiLSTM的医疗实体识别,建立医学知识图谱,建立知识问答系统 本项目主要实现了疾病自诊和医生推荐两个功能并构建了医生服务指标评价体系.疾病自诊主要通 ...
- 【二】MADDPG多智能体算法实现(parl)【追逐游戏复现】
相关文章: [一]MADDPG-单智能体|多智能体总结(理论.算法) [二]MADDPG多智能体深度强化学习算法算法实现(parl)--[追逐游戏复现] 程序链接:直接fork:MADDPG多智能体深 ...