两个问题
1.java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
2、Data sources cannot be empty.
背景
在本地搭了个linux 系统,发现直接部署上去当前maven项目会出现
找不到springboot 支持的问题,其实就是因为linux 上没有maven依赖
java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
root@WIN-KFAHSTAKD9P:/etc/tools# java -jar quickstart-1.0-SNAPSHOT.jar com.tl.it.edu.TlShopApplication
no main manifest attribute, in quickstart-1.0-SNAPSHOT.jar
root@WIN-KFAHSTAKD9P:/etc/tools# java -cp quickstart-1.0-SNAPSHOT.jar com.MyApplication
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
at com.Application.main(MyApplication.java:33)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
1.安装参考:https://blog.youkuaiyun.com/qq_38270106/article/details/97764483
根据上面的流程安装完成后执行下面命令
2.执行下载依赖命令
mvn dependency:get -DremoteRepositories= 私服地址 -DgroupId=你的项目组id -DartifactId= -Dversion=你的项目版本号
就可以看到 下载的过程了
完成 jar包下载后 可以 运行项目了
3.这时候执行 java -jar命令 有可能还有问题(我的还报错),我被这个问题折磨了好久(如果你没有遇到那恭喜你不用看了)
解决思路:
我们现在有jar包了,但是还是找不到依赖,找了一些博客,都没有找到答案,
但是看了一个部署新springboot项目的博客,发现部署很简单,那么我们就可以直接先自己创建个简单的项目对比下,与我们的项目有什么区别,就发现了
我的项目有两个问题:
1.项目中有一个自己定义的MANIFEST.MF文件,就这个文件导致的问题,其实我们不用改这个文件,除非你有自己特定的需求
删除 MANIFEST.MF ,然后 mvn clean package -Dmaven.test.skip=true 打包项目
java -jar *.jar 运行你的项目 完成
2.Data sources cannot be empty. 这个问题 大家不用细看,很明显打成jar包 运行参数就丢了,那就是打包的<build>标签内的配置有问题,我直接全删除了老的配置更改如下
hrew exception; nested exception is java.lang.IllegalArgumentException: Data sources cannot be empty.
这样就可以自动创建出正确的MANIFEST.MF文件,还能把application.properties 加载进去,当然你也可以细化配置,我是简单的实现,不想那么麻烦
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.7.RELEASE</version>
</plugin>
</plugins>
</build>
正确的 MANIFEST.MF文件如下,里面我的参数改成你的就行了(不要复制我的!自己打包就有)
Manifest-Version: 1.0
Implementation-Title: my-jdbc-quickstart #项目名
Implementation-Version: 1.0-SNAPSHOT
Start-Class: com.my.MyApplication # 你的启动类
Spring-Boot-Classes: BOOT-INF/classes/ #class文件地址 这都是固定的,没有特殊需求不能改
Spring-Boot-Lib: BOOT-INF/lib/ #你的jar包地址 这都是固定的,没有特殊需求不能改
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.1.7.RELEASE
Created-By: Maven Archiver 3.4.0
Main-Class: org.springframework.boot.loader.JarLauncher
4.运行 java 项目
再次 java jar -*.jar
完成
中间看了很多博客,走了很多弯路希望对大家有帮助