Springboot:Caused by: java.lang.NoSuchMethodError...
當前問題,我從移動前端協助後臺開發跑專案遇到的第一個問題。本來吧,功力就不是很深厚。遇到這個問題,把身邊自詡已經工作3年5年的後臺”牛牛”請來幫忙解決下問題。結果,也是一個勁兒的網上Google、百度!可最終和我前期結果是一樣的無能為力。我想算了吧,哥們自己來!然後這裡貼出自己的解決思路就是為了讓更多朋友不要像我一樣浪費一天半時間就為解決這個不值當的小問題上。網上確實也有很多的這種問題出現並貼出在自己的部落格上,但是我覺得會有很多向我一樣剛接觸這種後臺開發的看不懂,就是看不懂。而我的目的,只為讓你瞬間解決問題,不再浪費時間,也不用去麻煩那些忙碌的大牛。
問題展示:
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
at org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1122) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.5.jar:8.5.5]
... 10 common frames omitted
圖片3d效果展示:
其實真正出現問題的提示是這個:
具體出現問題的專案結構請看:
使用maven引入的jar包結構列表:
終極解決方案
根據最後解決問題的方式以及思路,其實在別人的部落格中還是能夠得出很多啟發的。比如這裡的她的部落格
其中有幾句很重要的資訊,基本已經和我的問題已經很接近了。而,我的問題就是出現在servlet-api.jar衝突導致的。其實這種問題就是這個原因。怎麼解決才是今天的主題?!簡單說就是,在安裝jdk的目錄,C:\Program Files\Java\jre1.8.0_141\lib\ext
下的如果有servlet-api.jar就刪掉,並且保證你啟動的tomcat版本和Springboot專案的tomcat版本與專案的有關tomcat的jar包版本基本一致。因為使用Springboot時候,專案本身就自動下載有servlet-api.jar功能的api。 所以最終就與...lib\ext
下的jar導致了錯誤的結果。
解決問題的思路
正確時候,專案對應開發版本
spring-boot-starter-parente版本 | Eclipse版本 | Maven版本 | Tomcat版本 |
---|---|---|---|
1.4.1.RELEASE | Release 4.7.0 (Oxygen) | apache-maven-3.5.4 | apache-tomcat-8.5.32 |
網上海量搜尋
這個一般都會有的,希望能夠順利些!但是即使不能完全的解決你的問題,但是能夠讓你明白你的問題出在什麼地方了,這是很重要的努力結果!
檢查你的配置環境
Tomcat環境是否正確配置
windows環境,下面是正確了。具體配置可Google。
Eclipse環境,不太清楚流程也可Google。完了之後,在Eclipse上Server下使用start命令啟動一下就能判斷是否配置好了。
Maven環境是否正確配置
windows環境,下面是正確了。具體配置可Google。有兩個地方需注意要正確配置:
1,使用者配置上,這裡我自定義了本地倉庫。
2,編譯環境上,maven編譯使用的是jdk不是jre。
完了之後,使用maven命令test一下就能判斷是否配置好了。
解決問題
當然,我錯誤的配置時候,使用的是Tomcat7.0.8
,然後又在官網下載了Tomcat8.5.32
進行配置。
而在版本Tomcat7.0.8
出錯的原因是,之前我把Tomcat中lib包下的servlet-api.jar
拷貝到了C:\Program Files\Java\jre1.8.0_141\lib\ext
目錄下,而使用Springboot時候,maven又會下載Springboot配置下的jar包。由此這兩處的jar包就理所當然的衝突了!
我的解決方式,是下載了一個和專案中的Springboot下載版本相同的Tomcat並佈置到專案中,然後刪除了..lib\ext
目錄下的servlet-api.jar
。再次執行,就成功了。
來一起看下成功執行的結果:
相關文章
- Caused by: android.os.Android
- Dictionary inconsistency caused by CTAS in PARALLELParallel
- Caused by: Error: ' ' is not a valid resource name characterError
- Caused by: java.lang.NoClassDefFoundError: javax/persistence/EntityListenersJavaError
- Caused by:.NoSuchBeanDefinitionException: No bean named 'userInfoServiceImpl' availableBeanExceptionAI
- Caused by: java.lang.NoClassDefFoundError: javax/servlet/GenericFilterJavaErrorServletFilter
- ORA-01555 caused by SQL statement belowSQL
- Tomcat:Caused by: java.lang.OutOfMemoryError: PermGen space .TomcatJavaError
- Caused by: java.lang.IllegalArgumentException: port out of range:-1JavaException
- Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionExceptionSpringFrameworkBeanException
- 遇到Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProviderJavaErrorIDE
- Software caused connection abort: socket write error/mysql/tomcatErrorMySqlTomcat
- Caused by: java.lang.IllegalArgumentException: Unable to instantiate SparkSession with Hive supportJavaExceptionSparkSessionHive
- Caused by: java.lang.IllegalStateException: getWriter() has already been called for this responseJavaException
- E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packagesErrorPackage
- Caused by: java.lang.ClassNotFoundException: javax.management.j2ee.statistics.StatsJavaException
- 開發:異常收集之 Software caused connection abort: recv failedAI
- Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of typeSpringFrameworkBeanException
- Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQLMySqlJDBCExceptionError
- Caused by: org.hibernate.MappingException: must specify an identifier type:APPExceptionIDE
- ORA-01555 caused by SQL statement below (Query Duration=0 sec, SCNSQL
- Caused by: java.sql.SQLException: 索引中丟失 IN 或 OUT 引數:: 1JavaSQLException索引
- Caused by: java.lang.NumberFormatException: For input string: "18446744073709551615"JavaORMException
- Caused by: java.io.IOException: Target host must not be null, or set in parameters. scheme=nullJavaExceptionNullScheme
- 自定義容器啟動指令碼報錯:exec user process caused "no such file or directory"指令碼
- ORA-00001 : Unique Constraint Violated caused by DATE VS Timestamp(6)AI
- Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for clASTXMLException
- Caused by: java.sql.SQLException: 無法從套接字讀取更多的資料JavaSQLException
- 18、 Caused by: java.lang.NoSuchMethodException: [class android.content.Context..AttributeSetJavaExceptionAndroidContext
- Caused by: java.sql.SQLException: 無法轉換為內部表示解決方法JavaSQLException
- 求助struts+ibatis+tomcat中java.net.SocketException: Software caused connectionBATTomcatJavaException
- Caused by: org.apache.ibatis.binding.BindingException: Parameter 'parameter' not found.解決ApacheBATException
- The addressing-1.5.mar module, which is not valid, caused null java.lang.ExceptionInInitializerErrorNullJavaExceptionError
- Caused by: org.apache.parquet.io.ParquetDecodingException: Can‘t read value in column [result, labelApacheException
- Android studio 升級到3.1出現的問題Caused by: java.util.NoSuchElementExceptionAndroidJavaException
- SpringBoot(19)---SpringBoot整合ApolloSpring Boot
- SpringBoot(17)---SpringBoot整合RocketMQSpring BootMQ
- SpringBoot(十六)_springboot整合JasperReSpring Boot