一个java项目引入jar包后,再把这个java项目打包,遇到的jar找不到的问题

参考文章:

https://www.cnblogs.com/qypx520/p/5844993.html

步骤1:准备主清单文件 “MANIFEST.MF”,

由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下:

Manifest-Version: 1.0
Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar lib/commons-logging-1.1.jar lib/log4j-1.2.16.jar lib/jackson-all-1.8.5.jar
Main-Class: main.KillCheatFans

第一行是MAINIFEST的版本,第二行Class-Path就指定了外来jar包的位置,第三行指定我们要执行的MAIN java文件。

这里要注意几点:

1、Class-Path: 和Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid header field;
2、假设我们的项目打包后为KillCheatFans.jar,那么按照上面的定义,应该在 KillCheatFans.jar的同层目录下建立一个lib文件夹(即lib文件和打包的jar文件
在同一个目录下),并将相关的jar包放在里面。否则将会出现“Exception in thread "main" java.lang.NoClassDefFoundError”的错误;
3、Main-Class后面是类的全地址,比如你的主文件是KillCheatFans.java,文件里打包为package com.main; 那么这里就写com.main.KillCheatFans,
不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类”的错误;
4、写完Main-Class后一定要回车(即最后一行是空白行),让光标到下一行,这样你生成的jar包才能找到你的主class去运行,
否则将会出现“jar中没有主清单属性”的错误。

重点来了,Class-Path: lib/commons-codec.jar ..... 等等这些jar包,还需要与java项目打成jar包放在同级目录下,才可以运行

如下图:我将java项目打包成BigFile.jar; 那我这个java项目引用的所有 jar 包应该放在libs文件夹中,在用命令来运行,才会生效

注意:Class-Path: lib/commons-codec.jar 中的lib 是可以改的,比如改成我的libs都是可以的

这样就可以大功告成了

猜你喜欢

转载自blog.csdn.net/chenxihua1/article/details/82658511