- 浏览: 171660 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
lb10001:
不错,正好需要这个知识
img src的特殊使用 -
923080512:
lz下面这句话写错了: Read Uncommitted ...
Spring事务隔离级别和传播行为 -
hucc:
good
img src的特殊使用 -
恶魔眼睛:
经常出现:
WARN | S-0:0:0:0:0:0:0:1 ...
pushlet 学习二 -
gaboolic:
ganqing1234 写道zhangyao 写道 retur ...
pushlet 学习二
转自: 1.在命令行中输入“jar -help”,就k可看到jar的详细用法了。 2.示例: 1)将两个class文档归档到一个jar文件中:jar -cvf XX.jar A.class B.class 2 )使用清单文件Manifest.mf将dir目录下的所有文件归档到一个jar中:jar -cvfm XX.jar Manifest.mf dir/* manifest 文件的格式很简单,每一行都是 " 名-值 " 对应的: 属性名开头,接着是 ":" ,然后是属性值,每行最多72个字符,如果需要增加,你可以在下一行续行,续行以空格开头,以空格开头的行 都会被视为前一行的续行。 Manifest.mf的详细用法(转) 现在我们来体验一下manifest文件的作用,如果现在我们有一个Java 应用程序打包在myapplication.jar中, main class为 com.example.myapp.MyAppMain ,那么我们可以用以下的命令来运行 Manifest 技巧
使用 m 选项,把指定文件名的manifest文件传入,例如
jar cvfm myapplication.jar myapplication.mf [-C]classdir
java -classpath myapplication.jar com.example.myapp.MyAppMain
这显然太麻烦了,现在我们来创建自己的manifest文件,如下:
Manifest-Version: 1.0
Created-By: JDJ example
Main-Class: com.example.myapp.MyAppMain
这样我们就可以使用如下的命令来运行程序了:(明显简单多了,也不会造成无谓的拼写错误)
java -jar myapplication.jar
管理JAR的依赖资源
很少Java应用会仅仅只有一个jar文 件,一般还需要 其他类库。比如我的应用程序用到了Sun 的 Javamail classes ,在classpath中我需要包含activation.jar 和 mail.jar,这样在运行程序时,相比上面的例子,我们要增加一些:
java -classpath mail.jar:activation.jar -jar myapplication.jar
在不同的操作系统中,jar包间的分隔符也不一样,在UNIX用“:”,在 window中使用 “;”,这样也不方便
同样,我们改写我们的manifest文件,如下
Manifest-Version: 1.0
Created-By: JDJ example
Main-Class: com.example.myapp.MyAppMain
Class-Path: mail.jar activation.jar
(加入了Class-Path: mail.jar activation.jar,用空格分隔两个jar包)
这样我们仍然可以使用和上例中相同的命令来执行该程序:
java -jar myapplication.jar
Class-Path属性中包含了用空格分隔的jar文件,在这些jar文件名中要对特定的字符使用逃逸符,比如空格,要表示成"%20",在路径的表示中,都采用“/” 来分隔目录(),无论是在什么操作系统中,(即使在window中),而且这里用的是相对路径(相对于本身的JAR文 件):
Manifest-Version: 1.0
Created-By: JDJ example
Main-Class: com.example.myapp.MyAppMain
Class-Path: ext/mail.jar ext/activation.jar
Multiple Main Classes(多主类)
还有一种Multiple Main Classes情况,如果你的应用程序可能有命令行版本 和GUI版本,或者一些不同的应用却共享很多相同的代码,这时你可能有多个Main Class,我们建议你采取这样的策略:把共享的类打成lib包,然后把不同的应用打成不同的包,分别标志主类:如下
Manifest for myapplicationlib.jar:
Manifest-Version: 1.0
Created-By: JDJ example
Class-Path: mail.jar activation.jar
Manifest for myappconsole.jar:
Manifest-Version: 1.0
Created-By: JDJ example
Class-Path: myapplicationlib.jar
Main-Class: com.example.myapp.MyAppMain
Manifest for myappadmin.jar:
Manifest-Version: 1.0
Created-By: JDJ example
Class-Path: myapplicationlib.jar
Main-Class: com.example.myapp.MyAdminTool
在myappconsole.jar 和 myappadmin.jar的manifest文件中分别注明各自的 Main Class
Package Versioning
完成发布后,如果使用者想了解 ,哪些代码是谁的?目前是什么版本?使用什么版本的类库?解决的方法很多 ,manifest提供了一个较好的方法,你可以在manifest文件中描述每一个包的信息。
Java 秉承了实现说明与描述分离的原则,package 的描述 定义了package 是什么,实现说明 定义了谁提供了描述的实现,描述和实现包含 名、版本号和提供者。要得到这些信息,可以查看JVM的系统属性(使用 java.lang.System.getProperty() )
在manifest文件中,我可以为每个package定义描述和实现版本,声明名字,并加入描述属性和实现属性,这些属性是
Specification-Title
Specification-Version
Specification-Vendor
Implementation-Title
Implementation-Version
Implementation-Vendor
当要提供一个类库或编程接口时,描述信息显得是很重要,见以下范例:
Manifest-Version: 1.0
Created-By: JDJ example
Class-Path: mail.jar activation.jar
Name: com/example/myapp/
Specification-Title: MyApp
Specification-Version: 2.4
Specification-Vendor: example.com
Implementation-Title: com.example.myapp
Implementation-Version: 2002-03-05-A
Implementation-Vendor: example.com
Package Version 查询
在manifest文件中加入package描述后,就可以使用Java提供的java.lang.Package class进行Package 的信息查询,这里列举3个最基本的获取package object的方法
1.Package.getPackages():返回系统中所有定义的package列表
2.Package.getPackage(String packagename):按名返回package
3.Class.getPackage():返回给定class所在的package
使用者这方法就可以动态的获取package信息.
需要注意的是如果给定的package中没有class被加载,则也无法获得package 对象
总是以Manifest-Version属性开头
每行最长72个字符,如果超过的化,采用续行
确认每行都以回车结束,否则改行将会被忽略
如果Class-Path 中的存在路径,使用"/"分隔目录,与平台无关
使用空行分隔主属性和package属性
使用"/"而不是"."来分隔package 和class ,比如 com/example/myapp/
class 要以.class结尾,package 要以 / 结尾
发表评论
-
《how tomcat works》读书笔记
2012-02-09 15:39 1520一 简单web服务 客户 ... -
Xpath使用,从 Java 程序中查询 XML
2011-12-14 09:45 1469转自:http://www.ibm.com/de ... -
从google code获取源码
2011-10-14 16:03 1879最近想学习python,找到了jaikuengine项目,一个 ... -
CXF几种客户端调用性能
2011-09-21 12:26 8120转自:http://blog.csdn.net/li ... -
java 路径、className.class.getResourceAsStream()、ClassLoader.getSystemResourceAsStr
2011-09-17 15:34 0className.class.getResourceAs ... -
java classLoader 体系结构
2011-09-17 15:27 1008java classLoader 体系结构 发表于:20 ... -
Java Http连接中(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)
2011-07-28 14:45 6156转自: http://blog.csdn.net/red ... -
白痴理解的SOAP/Web Service/WSDL关系
2011-07-27 17:01 1277转自: http://www.cnblogs.com/z ... -
JNDI 介绍
2011-04-09 20:12 1606转自http://blog.csdn.net/zhao ... -
Nutz源码之 Ioc 加载
2011-01-30 15:09 0Ioc 即为控制反转,放在spring里面叫 依赖注入,其实就 ... -
nutz源码 mvc 之 视图解析
2011-01-27 11:36 3481nutz的视图主要是通过con ... -
nutz源码 mvc 之 url与controller 映射
2011-01-22 15:57 2723mvc框架的一个重要的作用就是根据用户的url请求,来调用相应 ... -
nutz源码之aop实现
2011-01-10 10:13 0jjj -
pushlet 学习三 跨域实现
2010-11-02 20:14 0pushlet 的 ajax.js 是以ajax 轮询来实现 ... -
pushlet 学习二
2010-11-02 20:09 5299pushlet 的官网上有很多例子,可以参见http:/ ... -
利用slor实现索引查询
2009-06-19 10:43 3667项目里有一个查询模块,就是从特定的ftp站点扫描,然后利用so ... -
java 反射机制
2009-02-07 15:01 0RTTI(运行时类型检查)同reflection的真正区别在于 ... -
servlet的session管理
2009-01-09 14:53 1862在servlet里调用httpsession方法是 reque ... -
Spring--quartz中cronExpression配置说明
2008-12-12 13:48 1122Spring--quartz中cronExpression配置 ... -
java volatile关键字
2008-12-01 16:46 1355最近看LumaQQ的源码发现一个volatile(中文意思是“ ...
相关推荐
标签"源码"和"工具"暗示了这篇文章可能涵盖了如何查看和修改MANIFEST.MF文件的源代码,以及可能使用的工具,比如使用`jar`命令行工具或者集成开发环境(IDE)如Eclipse、IntelliJ IDEA进行操作。 在提供的压缩包子...
例如,可以通过`java.util.jar.JarFile`类的`getManifest()`方法来访问MANIFEST文件: ```java JarFile jar = new JarFile("path/to/your.jar"); Manifest manifest = jar.getManifest(); Attributes attributes = ...
标题中的“MANIFEST.MF”是指Java应用程序中的清单文件,它是每个JAR(Java Archive)文件的核心组成部分。MANIFEST.MF文件主要包含了关于JAR包的一些元数据信息,如主类(Main-Class)、版本信息、依赖库等。在运行...
Java Archive (JAR) 文件是Java平台上的一个特殊文件...理解JAR文件的结构、创建和使用方法,对于任何Java开发者来说都是必要的技能。通过阅读“JAR文件包及jar命令详解.pdf”,你可以更深入地学习这些概念和实践操作。
要制作可执行文件,需要使用 JDK 的 jar 命令将 Java 类文件打包成 JAR 文件,并在 MANIFEST.MF 文件中指定 Main-Class 项,以便用户可以双击运行。 JAR 文件包是 Java Archive File 的缩写,它是一种文档格式,...
### Jar文件包间接及Jar命令开发实例详解 #### 一、引言 在Java开发过程中,经常遇到将Java程序封装成可直接运行的文件...此外,了解Jar文件包的工作原理和使用方法也有助于提高Java开发者的技能水平和项目的实用性。
要使JAR文件具备可执行性,关键在于正确配置`MANIFEST.MF`中的`Main-Class`属性,该属性指定了JAR文件启动时的主类,即包含`public static void main(String[] args)`方法的类。 **步骤如下:** 1. **创建MANIFEST...
下面将详细阐述jarjar工具的工作原理、使用方法以及它如何解决jar包冲突。 **一、jarjar工具介绍** jarjar是一款开源的Java工具,它的主要功能是将多个jar文件合并成一个,同时可以对其中的类进行重命名或者移动,...
为了使JAR文件成为可执行文件,开发者需要在`MANIFEST.MF`中添加`Main-Class`字段,指定程序的入口点(即包含`public static void main(String[] args)`方法的类)。例如,如果主类位于`test`包下,名为`Test`,`...
总之,Java JAR打包技术是Java开发中的基础操作,理解并熟练掌握`jar`命令和`MANIFEST.MF`文件的使用,对于开发、部署和维护Java应用程序至关重要。通过合理组织和配置JAR文件,可以提高软件的可移植性和易用性。
- 使用`jar cvfm`命令打包并指定MANIFEST.MF: ```bash jar cvfm Hello.jar META-INF\manifest.mf HelloWorld.class ``` - 运行JAR包: ```bash java -jar Hello.jar ``` 6. **涉及多个依赖的JAR包**: - ...
这个命令会使用指定的`manifest.mf`作为MANIFEST文件来创建JAR文件。 5. **查看JAR文件的内容** ```bash jar tf test.jar ``` 可以查看`test.jar`文件的具体内容,包括所有文件及其路径信息。 #### 四、...
- 使用 `jar xf` 命令解压 JAR 文件,查看 `META-INF/MANIFEST.MF` 文件以确保 `Main-Class` 已正确设置: ```bash jar xf myjar.jar ``` - 然后手动打开 `META-INF/MANIFEST.MF` 查看内容。 5. **运行 JAR ...
本文将深入解析`jar`命令的使用方法,包括创建、修改、提取JAR文件以及如何运行JAR文件。 #### 一、基本概念与文件结构 JAR文件本质上是一个遵循ZIP文件格式规范的压缩包,但它拥有特定的结构和属性,使其能被Java...
在本篇中,我们将深入探讨jar命令的使用方法,包括如何打包基本的Java项目。 首先,`jar`命令的基本说明涉及到几个核心参数: 1. `-c`:创建一个新的.jar文件。当你需要将Java源代码编译后的`.class`文件打包成可...
4. 替换或保留MANIFEST.MF:fatjar允许用户自定义或保留原有的MANIFEST.MF文件,以设定类加载器、版本信息等。 5. 支持ANT脚本:fatjar插件还提供了与ANT构建工具的集成,使得在ANT脚本中调用打包过程变得简单。 ...
请根据你的项目结构和具体需求调整命令和MANIFEST.MF文件,确保JAR文件能正确执行。在CMD中操作时,务必注意路径的正确性和命令的准确性。如果有任何疑问,可以查阅readme.txt文件或相关Java文档获取帮助。