exception in thread main java,【异常】idea执行Main方法出现 Exception in thread main java.lang.NoClassDefFo...
一、異常復現步驟
1)首先得是一個Spring MVC項目
注:Spring Boot項目有內置的web 容器,不會出現該問題
2)main方法存在于使用HttpServletRequest類的類中
3)項目POM中引入有javax.servlet-api坐標或沒有
javax.servlet
javax.servlet-api
3.1.0
provided
4)執行Main方法出現以下異常
Error: A JNI error has occurred, please check your installation and tryagain
Exception in thread"main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
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.http.HttpServletRequest
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)
...7 more
二、異常分析和解決方法
1)出現該異常的原因:就是找不到HttpServletRequest類,及javax.servlet-apipom坐標沒引入或scope作用域問題
*compile,缺省值,適用于所有階段,會隨著項目一起發布。*provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。即已提供范圍的依賴在編譯classpath (不是運行時)可用*runtime,只在運行時使用,如JDBC驅動,適用運行和測試階段。*test,只在測試時使用,用于編譯和運行測試代碼。不會隨項目發布。* system,類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查找它。
如上解釋,scope需要時compile
2)解決方案就是修改scope作用域
1.直接修改pom文件的
javax.servlet
javax.servlet-api
3.1.0
compile
2.修改idea中的(推薦,該方法不會改變pom內容)
原文:https://www.cnblogs.com/756623607-zhang/p/10674388.html
總結
以上是生活随笔為你收集整理的exception in thread main java,【异常】idea执行Main方法出现 Exception in thread main java.lang.NoClassDefFo...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: discuz论坛 java,如何添加Di
- 下一篇: java和net共同点,Java和.NE