在一次实验过程中,使用maven打包java项目为jar包,打出来的myexp.jar包只有7KB(我的实验项目正常打出来的包不小于60MB)。这时,运行java -jar myexp.jar报错"没有主类清单",解压jar包发现MANIFEST.MF文件中确实没有Main-Class配置。这时回过头,才发现项目中pom.xml指定主类配置下的skip不小心设置为了true,如下图:
![](https://img2024.cnblogs.com/blog/842198/202502/842198-20250213090031340-670395684.png)
原本把skip改为false,重新打包事情就结束了。但是博主转念一想,java在命令行下可以通过-cp或-classpath参数指定类所在位置,那么是否可以指定主类路径运行。这时博主尝试运行:
java -cp * com.nacos.springboot.SpringbootApplication
发现报错:NoClassDefFoundError。这是因为myexp.jar也依赖了其它的jar包,所以博主使用maven将所有的依赖包全部拉到本地(方法详见:使用Maven命令行下载依赖库):
call mvn -f pom.xml dependency:copy-dependencies
这时你会发现在项目下的target文件夹中多了一个dependency文件夹,这个文件夹中就是整个项目所有的依赖jar包,如下图:
![](https://img2024.cnblogs.com/blog/842198/202502/842198-20250213092203313-1452720986.png)
将myexp.jar放到dependency文件夹中,在这个文件夹下运行:**java -cp * com.nacos.springboot.SpringbootApplication ,**这时发现项目运行起来了: )
![](https://img2024.cnblogs.com/blog/842198/202502/842198-20250213092434006-2120453476.png)