运行jar包时,在命令行中指定依赖的jar包和主类

在一次实验过程中,使用maven打包java项目为jar包,打出来的myexp.jar包只有7KB(我的实验项目正常打出来的包不小于60MB)。这时,运行java -jar myexp.jar报错"没有主类清单",解压jar包发现MANIFEST.MF文件中确实没有Main-Class配置。这时回过头,才发现项目中pom.xml指定主类配置下的skip不小心设置为了true,如下图:

原本把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包,如下图:

将myexp.jar放到dependency文件夹中,在这个文件夹下运行:**java -cp * com.nacos.springboot.SpringbootApplication ,**这时发现项目运行起来了: )