java -cp 错误:找不到或无法加载主类
1.问题场景
在一个项目开发中,我需要写一个 windows的bat脚本,需要在里面 调用 SpringBoot项目生成的jar包,我在调用 classes下面的 jar时
通过 调用 jar包 去调用 jar包中的某个 .java类
总是报 错误:找不到或无法加载主类
最后搞的我心态都崩了,明明路径正确 ,就是找不到
2.问题分析
SpringBoot项目生成的 jar包 ,大家可以看到内部,和这个 classes是在 BOOT-INF下面
BOOT-INF 下层目录是 classes ,在下层才有com文件,com里面存储的就是 我们的代码
平常的 maven项目打的jar包,大家对比上面看,平常的这个 直接就是 classes目录下面,而上面的 SpringBoot就是 多了一层,所以会导致使用 java -cp 的时候找不到。
3.正确调用
在你调用命令的后面加上 org.springframework.boot.loader.PropertiesLauncher
使用正确的命令 这个命令就可以了
java -cp .:uxccServer-0.0.1-SNAPSHOT.jar -Dloader.main=com.uxdb.webserver.common.jenkinspackage.UxccReplace org.springframework.boot.loader.PropertiesLauncher
1
2
4.PropertiesLauncher是什么
PropertiesLauncher有一些特殊的性质,它们可以通过外部属性来启用(系统属性,环境变量,manifest实体或application.properties)。
springboot的类加载器(org.springframework.boot.loader)
springboot项目启动,调用的是相应的类加载器的main方法,而不是我们自己编写的SpringApplication
Spring Boot Loader提供了一套标准用于执行SpringBoot打包出来的jar,这套标准就是我们的类加载器
————————————————
版权声明:本文为CSDN博主「有翅膀的猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_48321825/article/details/129166052