tomcat在呼叫shared lib遇到的問題--gradle
eclipse 在本地啟動tomcat跑專案,完全沒有問題,當打包部署伺服器時,發現報錯。
當時我們遇到的問題直接顯示是
org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [DispatcherServlet] in context with path [/robot] threw exception [Request processing failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined] with root cause
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:371)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:331)
at org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:370)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:271)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy61.findOneDebtorNameAudio(Unknown Source)
at com.squ.robot.service.impl.NameCutServiceImpl.dealWavFile(NameCutServiceImpl.java:127)
at com.squ.robot.controller.WavCheckController.uploadFile(WavCheckController.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
各種找問題,查資料,網上大部分都是說JPA的使用問題,矛頭指向@Transactional 的使用上,這裡也mark一下吧,@Transactional 在jpa的使用中,對於update和delete必須宣告;
後面不管怎麼除錯都不成功,然後發現本地可以,但是部署到測試的包上就不行,於是我就只能用最笨的方法,對比通過gradle命令打出來的war包和本地部署的tomcat下的webapps下的war是否有區別;
對比發現gradle打包的war中缺少很大部分的jar,然後發現這部分缺少的jar放在來伺服器的tomcat的shared中,通過tomcat的conf中catalina.properties 載入,這裡包含了tomcat的jar和class的載入順序,省略1000字,mark一下;
然後發現shared裡面的jar和部署war中有jar包的重疊,這就是產生問題的根本所在,於是就將所有重複的jar刪除後,重新打包就ok了。
後續研究發現,報錯的重複的jar主要是spring-jms引起的,也就是gradle打包的時候將
providedCompile('org.springframework:spring-jms:4.1.4.RELEASE')
錯誤的寫成了
compile('org.springframework:spring-jms:4.1.4.RELEASE')
這樣就導致了war包重複打了這些包,一步步導致了上面的問題。
知識點三:gradle中:compile,providedCompile,runtime 的區別:
僅在執行的時候需要,但是在編譯時不需要依賴,就用runtime ;前提:apply plugin: 'java';
如果你的jar包/依賴程式碼 僅在編譯的時候需要,但是在執行時不需要依賴,就用providedCompile ;前提:
apply plugin: 'war';
如果你的jar包/依賴程式碼 在編譯的時候需要依賴,在執行的時候也需要,那麼就用compile ;前提:
apply plugin: 'war'
或者apply plugin: 'java'
mark 一下。
相關文章
- 從json-lib轉成jackson的遇到的問題JSON
- flash中呼叫XML遇到的中文顯示異常問題XML
- [提問交流]請問如何呼叫thinkphp裡lib的storage類呢?PHP
- SpringBoot使用IDEA設定的外部Tomcat啟動,遇到的問題和解決Spring BootIdeaTomcat
- 狀態模式中迴圈呼叫子元件時遇到的問題模式元件
- [20240309]在windwos下使用sed遇到的問題.txt
- Gradle 技巧與問題Gradle
- 關於tomcat在idea上的中文編碼問題TomcatIdea
- linux遇到的問題Linux
- Vagrant 遇到的問題
- Homestead 遇到的問題
- sudo 遇到的問題
- JackJson遇到的問題JSON
- mysql 遇到的問題MySql
- WangEditor遇到的問題
- 在騰訊雲上安裝mysql遇到的問題MySql
- 在遊戲中播放cg視訊遇到的問題遊戲
- laravel 在配置nginx代理時遇到的連結問題LaravelNginx
- 使用git遇到的問題Git
- SpringBoot遇到的某些問題Spring Boot
- 我遇到的小白問題
- React Native遇到的問題React Native
- 部署Jenkins + 遇到的問題Jenkins
- fastadmin自己遇到的問題AST
- 本週遇到的問題
- 在 Debian 64 位上安裝 wkhtmltopdf 時遇到的問題HTML
- 在效能測試的過程中會遇到哪些問題?
- 遇到奇葩問題
- air在go的其他版本上執行可能遇到的問題AIGo
- 高效解決Failed to open zip file.Gradle‘s dependency cache may be corrupt(Android初學者遇到的問題—gradle的地址配置與安裝)AIGradleAndroid
- vegetable one(tomcat問題)Tomcat
- 遇到的編碼問題、時區問題整理
- laravel使用中遇到的問題Laravel
- 安裝kylin遇到的問題
- Hodoop配置中遇到的問題OdooOOP
- 工作中遇到的問題
- Laravel-pay 遇到的問題Laravel
- Laravel 安裝遇到的問題Laravel