問題描述:
今天創(chuàng)建了一個(gè)springboot項(xiàng)目,但是運(yùn)行的時(shí)候出現(xiàn)了問題,用的是gradle構(gòu)建工具,錯(cuò)誤信息如下:
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
at com.example.Demo2Application.main(Demo2Application.java:10)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
提示的信息是 沒有找到這個(gè) org/springframework/boot/SpringApplication這個(gè)文件,但是我全局搜索了一下,是有這個(gè)文件以及其對應(yīng)的class文件的:

這樣應(yīng)該是沒問題的,其實(shí)這個(gè)問題我上個(gè)星期就遇到過,問了很多人也查找了很多資料,都沒有解決。其實(shí)這樣的問題一般都是缺少jar包,或者路徑出現(xiàn)了問題,不過我檢查了一下,我這里是沒有問題的。
解決問題:
最后大早上的,我弄了將近兩個(gè)小時(shí)終于把問題解決了~~~
由于本地c盤中的.m2下的settings.xml這個(gè)文件里配置的倉庫中前幾條都是公司里的repo,所以導(dǎo)致了我refresh project的時(shí)候會(huì)無比的慢,因?yàn)槲疫@邊沒開vpn幾乎時(shí)訪問不了公司的repo的,maven去遠(yuǎn)程拉依賴的時(shí)候不夠智能,因?yàn)榍皟蓚€(gè)repo我配置的是公司的,后兩條我配置的是maven官方的repo,所以maven如果發(fā)現(xiàn)前幾個(gè)repo響應(yīng)太慢應(yīng)該快速的切換其他的repo,可惜的是maven現(xiàn)在的切換速度太慢了,最后我把這公司的前幾天repo都刪了(記得備份一下),最后拉取依賴的速度就很快了。
接著我發(fā)現(xiàn)創(chuàng)建springboot項(xiàng)目的時(shí)候,構(gòu)建工具用的是maven是沒有問題的,所以我覺得問題可能就出在gradle這個(gè)構(gòu)建工具上,最后發(fā)現(xiàn)是因?yàn)樽约河昧吮镜氐膅radle配置,最后改成推薦的gradle配置就可以了:

然后重新創(chuàng)建一個(gè)gradle project 就可以啟動(dòng)成功了:

我覺得可能是springboot版本和gradle版本出現(xiàn)了沖突,因?yàn)槟J(rèn)的gradle wrapper是springboot 自己集成進(jìn)去的,springboot即使版本更新,自己也會(huì)維護(hù)這個(gè)gradle wrapper,所以用推薦的是沒有問題的。