java生成可执行jar

java生成可执行jar 非常简单

使用myeclipse直接export-->jar导出 选择main方法的类就ok

但是如果jar引用了其他的jar 必须在Manifest文件中引入jar

例如:

Manifest-Version: 1.0
Main-Class: Main
Class-Path: axis/activation.jar axis/axis.jar axis/axis-ant.jar axis/commons-discovery-0.2.jar
 axis/commons-logging-1.0.4.jar axis/commons-logging-1.1.jar axis/commons-logging-api-1.1.jar
 axis/jaxrpc.jar axis/log4j-1.2.8.jar axis/mail.jar aixs/saaj.jar axis/serializer-2.7.1.jar
 aixs/wsdl4j-1.5.1.jar axis/xalan-2.7.1.jar aixs/xercesImpl-2.9.1.jar
 axis/xercesImpl.jar aixs/xercesSamples.jar axis/xml-apis-1.3.03.jar
 aixs/xml-apis.jar axis/xmlParserAPIs.jar axis/xmlsec-1.4.4.jar
 axis/xmlsecSamples-1.4.4.jar axis/xmlsecTests-1.4.4.jar axis/quartz-all-1.7.3.jar

jar包太多全部放在一行 会导致错误

必须换行 换行的行 开头和结尾必须要有一个空格

 axis/commons-logging-1.0.4.jar 的意思是 必须在可执行jar 同一目录下的axis子目录下的commons-logging-1.0.4.jar

或者使用jdk自带的jar命令 jre是没有jar.exe  如果是使用jre 那就从jdk中拷贝一个jar.exe到bin目录 同时复制一份 bin下面的server目录 修改为

client 就行了 在cmd命令中键入 jar /?出现jar的帮助

可以先整理出一份目录 比如是c:\yjj下面是所有的类结构文件 即包结构和报下面的类  同时建一个 Manifest.mf文件

比如内容是 :

Manifest-Version: 1.0
Main-Class: Main

引入jar参考上面

利用cmd命令 进入该目录 cd  c:/yjj

比如jdk在E:\java\jre\bin\目录下

使用命令 E:\java\jre\bin\jar cvfm yjj.jar manifest.mf -c ./

./ 表示打包当前目录下的所有文件 如果你不到yjj目录下而是到c盘的话 把./改成 c:/yjj jar包中多了一个yjj目录

所以必须到要打包的目录中才能执行这个命令

执行的话 cmd命令下 java -jar 可执行.jar

如果jar包数量太多 觉得Class-Path太多 可以使用-Djava.ext.dirs 参数 jdk6+可用

例如

java -Djava.ext.dirs=引用的lib库的路径;可执行jar的路径 -jar 可执行jar路径\可执行jar名称.jar
java -Djava.ext.dirs=E:\workspace\posgui\lib;E:\workspace\posgui -jar E:\workspace\posgui\pos.jar

如果可执行jar的路径 不放在里面 会导致主方法 找不到可执行jar中所有其他引用的类

即使使用-cp和-classpath都不行

例如 主方法是在com.auto.frame.AutoFrame中 在main中引用了ABC类 ABC类也在pos。jar中

使用如下方式都会失败

1。java -Djava.ext.dirs=E:\workspace\posgui\lib -jar E:\workspace\posgui\pos.jar
2.    java -Djava.ext.dirs=E:\workspace\posgui\lib -jar -classpath E:\workspace\posgui  E:\workspace\posgui\pos.jar

3.    java -Djava.ext.dirs=E:\workspace\posgui\lib -jar -cp E:\workspace\posgui  E:\workspace\posgui\pos.jar

pos.jar的manifest.mf文件只需要 主方法即可例如

Manifest-Version: 1.0
Main-Class: com.auto.frame.AutoFrame

原文地址:https://www.cnblogs.com/liaomin416100569/p/9331484.html