第一步,点击项目,新建MANIFEST.MF文件。
注意凡是 :号后一定要空格,一行结束空一格换行。
注意Class-Path 多jar包依赖时,每个jar包前后各空一个。
最后一行结束后,后边跟俩个空行。
注意jar包名称。
Manifest-Version: 1.0
Class-Path: lib/commons-dbutils-1.7.jar
lib/c3p0-0.9.5.5.jar
lib/mysql-connector-java-5.1.48-bin.jar
lib/commons-pool2-2.8.0.jar
lib/commons-logging-1.2.jar
lib/mchange-commons-java-0.2.20.jar
Main-Class: data.source.Test
第二步
点击项目右键,Export,java下JAR file包,点next。输入jar包名称,导出的目录。
点击next,再点击next,选中Use existing manifest from workspace,在Manifest file点击Browse...选中编辑好的那个MANIFEST.MF
最后点击finish。如果有compiler告警之类的,先不用管。如下所示
JAR export finished with warnings. See details for additional information.
Exported with compile warnings: okHeny/src/data/source/JDBCUtils.java
Exported with compile warnings: okHeny/src/data/source/Test.java
如果有如下提示,说明MANIFEST.MF格式错了
JAR creation failed. See details for additional information.
invalid header field
invalid header field
如果出现如下情况,说明MANIFEST.MF引入的包不正确。请查看.MF 文件是否写错。
最后一步,在导出的jar包目录中,新建一个lib文件夹,然后把依赖的jar拷贝进去。
java -jar XXX.jar 就会自动引入依赖包。
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/dbutils/ResultSetHandl
er
at data.source.Test.main(Test.java:21)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.dbutils.ResultSetHandler
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
注意MANIFEST.MF格式,注意依赖包的名称,注意提示。
运行环境,jdk安装好,配置后环境变量。确保java命令可以正常执行。