?
一. 不依赖第三方类库的可执行JAR
? Eclipse 工程上右键->export 打开窗口中,选择java/jar file ->next->
? ? 1.选择打到jar包里的文件和src下的哪些类
? ? 2.在JAR file:录入生所的jar包名。(默认路径是当前工作台目录,与可以选择指定的目录)
? ->next->next : Main class 框中选择主执行类->finish 就可以生成jar包的。
?
二 ? 依赖第三方类库的可执行JAR
? ? 如果代码的执行依赖第三方类库,就需要第三方类库的jar包在classpath中,如果通过java命令指定classpath,如: java -cp lib/* -jar test.jar (test.jar中的代码依赖lib目录下的jar包),执行时会报错:java.lang.NoClassDefFoundError,原因jar执行会忽略命令行参数cp,而是到jar包中的 META-INF/MANIFEST.MF文件中查找classpath定义。
? ?eclipse默认生成的MANIFEST.MF文件中不带有classpath项。
? ?需要自己写一个MANIFEST.MF,在手成JAR包时指定该文件 或者用winrar打开生成的jar包,修改META-INF/MANIFEST.MF。
?
? MANIFEST.MF 文件的简单格式:
? ? Manifest-Version:1.0 版本号
? ? Class-Path: jar包所在路径 (不能使用通配符)
? ? Main-Class: 主执行类全名
??
? ?MANIFEST.MF文件示例(带有尖括号那两行不算):?
? ?
<---Manifest-Version: 1.0Class-Path: lib/log4j-1.2.15.jar lib/commons-beanutils-1.8.0.jar lib/xml-apis.jar lib/xml-resolver-1.2.jar lib/xmlbeans-2.4.0.jar lib/xmlbeans-qname.jarMain-Class: yanlei.base.tools.net.udp.example.ChatServer--->
??
注意:少了空格或换行以及Class-path与Main-Class位置的调换都可能引起出错。
?
在Eclipse中生成jar包时,指定MANIFEST.MF:
?
? ?
生成的jar里META-INFO/MANIFEST.MF文件:
Manifest-Version: 1.0Class-Path: lib/log4j-1.2.15.jar lib/commons-beanutils-1.8.0.jar lib/x ml-apis-1.0.b2.jar lib/xml-apis.jar lib/xml-resolver-1.2.jar lib/xmlb eans-2.4.0.jar lib/xmlbeans-qname.jarMain-Class: yanlei.base.tools.net.udp.example.ChatServer
?可以看出Class-path 中是以空格来做为分隔符的。
?
?