報(bào)錯(cuò)信息如下【不同環(huán)境報(bào)錯(cuò)信息可能不一致,大概就是
NoClassDefFoundError異?!?
java.lang.NoClassDefFoundError: javax/servlet/ServletContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
1、問(wèn)題描述
所有scope為 provided 的依賴都是不會(huì)被加入到 classpath 中的,目前該bug尚未被修復(fù)(bug report)。如果你的web應(yīng)用是部署到容器中的,那么這個(gè)bug不會(huì)影響使用,因?yàn)閣eb應(yīng)用中provided的依賴在容器運(yùn)行時(shí)會(huì)被提供。如果你做Spring Boot開(kāi)發(fā),有帶provided的依賴時(shí),直接在IDE中運(yùn)行項(xiàng)目會(huì)導(dǎo)致ClassNotFound異常
- 官方Bug ?? https://youtrack.jetbrains.com/issue/IDEA-107048
上面給出了挺多的解決方案,感興趣的可以自行查看
2、解決方案
-
【推薦】在運(yùn)行配置Configuration選項(xiàng)卡下Use classpath of module的下方有個(gè)復(fù)選框 Include dependences with "Provided" scope 把這個(gè)勾上就可以了。 - 當(dāng)
packaging為jar時(shí),直接更改scope為compile(不推薦) - 使用mvn命令:
mvn spring-boot:run(如果需要DEBUG,點(diǎn)擊IDE右側(cè)的Maven Projects, 在Plugins找到spring-boot:run,右鍵選擇 debug 運(yùn)行)
