問題解決:啓動tomcat,日誌輸出:java.lang.ClassNotFoundException: com.tingyun.api.agent.TingYunApiImpl

問題場景

有一個老項目,其中的tomcat有引入聽雲的插件。之後,因爲項目不需要了,所以需要移除相關的插件。之前是直接在啓動命令裏面加上javaagent參數。現在移除了這個參數,但是啓動了,提示報錯,報錯提示如下:

java.lang.ClassNotFoundException: com.tingyun.api.agent.TingYunApiImpl
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
        at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:126)
        at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at org.apache.jsp.admin.commonModule.fastdfs.index_jsp._jspService(index_jsp.java:180)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

在這裏插入圖片描述

問題環境

軟件 版本
tomcat 7.0
JDK 1.6

問題原因

如果瞭解tomcat的目錄結構的話,遇到這個問題的時候,應該知道是爲什麼。這是tomcat的內部機制導致的。對於JSP文件,tomcat在調用JSP頁面的時候,在第一次調用的時候,會在本地的工作目錄的work/Catalina/生成對應的域名的文件夾,裏面會存放對應的JSP生成的java文件,並進行編譯,形成對應的class文件。如下圖:
在這裏插入圖片描述
所以,如果是新頁面,第一次調用的時候,會比較慢。等編譯成功之後,調用起來就比較快了。之後,如果JSP頁面有變動的時候,tomcat檢測到就會進行更新。
在這裏插入圖片描述
所以,有經驗的運維及開發,就會在更新代碼的時候,順便刪除掉 work目錄,避免出現問題。
在這裏插入圖片描述
那麼,聽雲這個插件啓動的時候,會在對應的頁面加入對應的代碼。而這部分代碼已經被生成在work目錄下面了。如果我們只是移除插件,而沒有變動代碼,那麼原來已經包含插件的代碼就會出現問題。

解決方案

在這裏插入圖片描述
既然知道了原因了,那我們在腳本移除聽雲的配置的時候,也得將tomcatwork目錄給刪除掉。

結果

tomcatwork目錄給刪除掉,重新啓動無報錯。
在這裏插入圖片描述

總結

瞭解tomcat的目錄結構,遇到一些問題,就可以很輕易的解決掉。

隨緣求贊

如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以點擊關注
可以掃描以下二維碼,關注我的公衆號:楓夜之求索閣,查看我最新的分享!
在這裏插入圖片描述
拜拜

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章