JAVA Drp項目實戰—— Unable to compile class for JSP 一波三折

?

???????交代下背景。電腦系統是64位的,用的是64位的Tomcat。安裝是32位的Myeclipse10java環境也是32位的。Tomcat在開始啟動時會報這樣一個錯誤,“Can't load IA 64-bit .dll on a AMD32-bit platform”。可是不耽誤使用,近期在敲Drp項目中用到了底層接口的幾個方法,這個錯誤導致項目不能正常執行了,所以就將64位的Tomcat換成了與java環境一樣的32位的Tomcat。上面的問題就順利攻克了,于是繼續自己的開發,可是當JSP頁面啟動時就出現了我們這篇文章要說的錯誤“Unableto compile class for JSP”。

?

以下是這個錯誤的具體信息:

嚴重:Servlet.service() for servlet [jsp] in context with path [/drp5.9] threwexception [Unable to compile class for JSP:An error occurred atline: [33] in the generated java file: [D:\計算機\學習課程\第三年\3.J2EE\2DRP_Java項目視頻_王勇\MyDrp\drp\apache-tomcat-7.0.55-windows-x86\apache-tomcat-7.0.55\work\Catalina\localhost\drp5.9\org\apache\jsp\login_jsp.java]
The methodgetJspApplicationContext(ServletContext) is undefined for the type JspFactoryStacktrace:] withroot cause
org.apache.jasper.JasperException:Unable to compile class for JSP:An error occurred atline: [33] in the generated java file: [D:\計算機\學習課程\第三年\3.J2EE\2DRP_Java項目視頻_王勇\MyDrp\drp\apache-tomcat-7.0.55-windows-x86\apache-tomcat-7.0.55\work\Catalina\localhost\drp5.9\org\apache\jsp\login_jsp.java]
The methodgetJspApplicationContext(ServletContext) is undefined for the type JspFactoryStacktrace:
atorg.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
atorg.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
atorg.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:476)
atorg.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
atorg.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
atorg.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
atorg.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
atorg.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
atorg.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
atorg.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:727)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atcom.bjpowernode.drp.util.filter.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:40)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
atorg.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
atorg.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2440)
atorg.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2429)
atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
atorg.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
atjava.lang.Thread.run(Thread.java:744)


?

于是僅僅好去網上查資料。有好多人都說是JSP頁面代碼編寫錯誤或者說是Java環境變量沒有配置好導致的。因為我之前JSP頁面能夠正常執行。全部就將這個說法給排除了。

?

?

接著找網上說的是Tomcat文件夾下的conf文件夾里的web.xml文件與項目中的web.xml文件的版本號標識不一樣,于是就將Tomcat里的web.xml文件改成了和項目里的一樣的標識版本號。

就是以下這句話:

<?xmlversion="1.0" encoding="UTF-8"?

> <web-appversion="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name></display-name> </web-app>



?

然后又一次啟動項目的JSP頁面,錯誤繼續存在。于是在網上繼續找,發現網上非常多的人又說是由于項目中有比較低的版本號的jar包導致的:以下是網上的原話。非常多人都允許以下這樣的說法。

?

“catalina.jar、jsp-api.jar、servlet-api.jar、javax.servlet.jar、javax.servlet.jsp.jar等包和應用server(JBoss/Tomcat等)中的包反復且比其版本號低。應用server在啟動時會優先載入項目中的包,這樣就導致和應用server中的其他包不匹配。

可把反復的包從項目中刪除。或將應用server下的這些包復制到項目中,重新啟動服務就可以。”

?

接下來我真的在?javaee Library中發現了javax.servlet.jar 和javax.servlet.jsp.jar jar兩個包

。于是就將它們移除了。當再次啟動JSP頁面時這個問題依舊存在。

?

到這里,好幾個小時都已經過去。心情有點小浮躁了已經。強迫讓自己冷靜下來,好好將這個問題順一順。

?

因為之前JSP頁面能夠正常執行。排除JSP代碼編寫錯誤,唯一做的改變也僅僅是又一次換了一個Tomcat而已,Tomcat換完以后,環境變量也已經配置完畢了。不可能是環境變量的問題。

如今頁面不能正常執行。會不會是因為之前的64Tomcatjar包影響了如今32位的Tomcat。于是接下來做了一個試驗,又一次建立一個項目,在里面建立一個新的JSP頁面,能夠正常訪問。

?

最后問題攻克了,解決方法非常搞笑:新建立一個項目,將原來項目的類、配置文件、jsp文件、還有我們自己專門引入的jar包,也就是自己在做項目中加入或引入的文件復制到新建立的項目中。然后執行就成功了,問題就不會再出現了。

?

?

果然是之前的64Tomcatjar包影響的。盡管之前的64位的Tomcat早已經移除了,但是之前的64位的Tomcat的一些jar包仍然包括在項目中導致的。

?

盡管過程一波三折。只是終于問題還是攻克了。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259098.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259098.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java中的ClassLoader

Java中類的加載過程&#xff08;如Dog類&#xff09;&#xff1a; 通過類型信息定位Dog.class文件。載入Dog.class文件&#xff0c;創建相應的Class對象。執行父類的靜態字段定義時初始化語句和父類的靜態初始化塊。執行子類的靜態字段定義時初始化語句和子類的靜態初始化塊。當…

excel刪除無盡空白行_excel如何批量刪除空白行 巧用 ctrl+G 只需1秒 最常用的技巧...

工作中我們使用excel通常都會遇到這種情況&#xff0c;就是表格中有很多多余的空行。我們需要把多余的空行刪除。 如果空行只有一兩行的話&#xff0c;可以把鼠標放在空白行上&#xff0c;然后點擊鼠標右鍵&#xff0c;在彈出的菜單中選擇刪除菜單。 在彈出的刪除確定窗口中&am…

Doxygen for C++使用說明——注釋代碼一

寫這一節的時候&#xff0c;我在想網上有眾多的參考文獻&#xff0c;外加官網上的&#xff0c;要是我再將它們重復一遍&#xff0c;也沒什么意思。網上資料很多&#xff0c;但是他們有一個共同的缺點是都是羅列用法&#xff0c;然后顯示效果。這些都是比較散的&#xff0c;我想…

DevOps的前世今生

2019獨角獸企業重金招聘Python工程師標準>>> 目前在國外&#xff0c;互聯網巨頭如Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb&#xff0c;傳統軟件公司如Adobe、IBM、Microsoft、SAP等&#xff0c;亦或是網絡業務非核心企業如蘋果、沃爾瑪、索尼影視娛樂…

【轉】最牛B的編碼套路

最近&#xff0c;我大量閱讀了Steve Yegge的文章。其中有一篇叫“Practicing Programming”&#xff08;練習編程&#xff09;&#xff0c;寫成于2005年&#xff0c;讀后令我驚訝不已&#xff1a; 與你所相信的恰恰相反&#xff0c;單純地每天埋頭于工作并不能算是真正意義上的…

ecshop 廣告設置

最近公司準備做個商城&#xff0c;讓我從JAVA轉過去&#xff0c;好吧&#xff0c;先看下吧&#xff0c;反正也得做。接到手里的是一套已經成型的模板&#xff0c;但是二次開發必須得了解下機制、文件、響應、設置什么的&#xff0c;也是個新手&#xff0c;寫點東西給后面更新的…

linux 信號_Linux信號機制

信號就是一條消息&#xff0c;通知進程系統中發生了什么事&#xff0c;每種信號都對應著某種系統事件。一般的底層硬件異常是由內核的異常處理程序處理的&#xff0c;它對用戶進程來說是透明的。而信號機制&#xff0c;提供了一種方法通知用戶進程發生了這些異常。例如&#xf…

DOxygen for C++使用說明——添加數學公式

公式 Doxygen允許你把 公式顯示在最終的輸出中&#xff08;這個功能僅限于HTML和輸出&#xff09;.為了可以在HTML documentation顯示公式&#xff08;轉化為圖片&#xff09;&#xff0c;你必須安裝以下軟件&#xff1a; latex: 編譯器, 被用來解析公式, 首先提取公式寫到一…

VC2010下Qt5的中文亂碼問題

要搞清楚這個問題&#xff0c;先要弄明白編碼。但是編碼問題實在太復雜&#xff0c;這里肯定講不開。 我先找一個例子&#xff0c;比如&#xff1a;“中文” 的 Unicode 碼點/UTF8編碼/GBK 分別是多少。 先去這個網站&#xff0c;輸入 “中文” 查詢對應的 Unicode 碼點/UTF8編…

Tomcat 的 DefaultServlet

問題描述&#xff1a; 群里有人測試 Spring MVC&#xff0c;沒有配置任何Controller&#xff0c;只配置了一個view resolver&#xff0c;指定了前綴后綴。 然后&#xff0c;他問的是 當訪問 localhost:8080/test 的時候&#xff0c;為什么會被重定向到 localhost:8080/test/ &a…

Python學習(七)面向對象 ——封裝

Python 類的封裝 承接上一節&#xff0c;學了Student類的定義及實例化&#xff0c;每個實例都擁有各自的name和score。現在若需要打印一個學生的成績&#xff0c;可定義函數 print_score() 該函數為類外的函數&#xff0c;如下&#xff1a; 1 class Student(object):2 def …

spss練習數據_SPSS篇——如何在成千上百萬個數據中標識重復個案

本文就帶大家來學習一個小技巧&#xff0c;如何運用SPSS標識重復個案。我們都知道在Excel中&#xff0c;通常會用到“篩選”功能來選出指定條件相同的單元格。那么在SPSS中&#xff0c;如何在成千上百萬個數據中篩選出重復的個案呢&#xff1f; 小編就是要告訴你&#xff0c;幾…

DOxygen for C++使用說明——Markdown支持

自Doxygen 版本1.8.0&#xff0c;Markdown被引進。 接下來&#xff0c;我們將先簡單介紹標準的Markdown語法&#xff0c;讀者可以進入Markdown官網查詢更詳細的細節。然后討論一下Doxygen支持的Markdown擴展&#xff0c;最后討論一下Doxygen對Markdown標準的實現細節。 Stand…

方程式漏洞之復現window2008/win7 遠程命令執行漏洞

前幾天就想寫的&#xff0c;因為一些緣故就沒寫。此次是在外網環境下進行的。大家在內網中也一個樣。 方法&#xff1a; 使用Eternalblue模塊&#xff0c;劍測是否有漏洞然后msf生成一個dll直接反彈shell. PS&#xff1a;win版本的不知道緣何生成出來的dll是0kb 我就在自己本地…

C++空類和string類

1. 空類 1.1 空類默認哪六個成員函數。 1 class Empty2 {3 public:4 Empty(); //缺省構造函數 Empty e;5 Empty( const Empty& ); //拷貝構造函數 Empty e2(e1);6 ~Empty(); //析構函數7 Empty& operator( const Empty& ); //賦值運算符…

客服會話 小程序 如何發起_小程序、公眾號、App三者如何融合布局?這里有一份避坑指南...

對產品經理來說&#xff0c;小程序無疑是2020年最火爆的詞之一了。我們能看到&#xff0c;就在今年疫情期間&#xff0c;小程序DAU達到4.5億&#xff0c;而超市、生鮮果蔬、社區購物等都同比增長100個點左右&#xff0c;小程序的商業價值很明顯地在快速釋放。小程序如此火爆&am…

DOxygen for C++使用說明——注釋代碼二

這一次我在谷歌搜索中檢索到了Doxygen在github的倉庫&#xff0c;進去一看&#xff0c;令人大喜&#xff0c;github倉庫里含有了一個Doxygen的官方配置文件Doxyfile,于是下載下來&#xff0c;發現Doxyfile已經配置了將倉庫中的\src文件編譯成Documentation,并且將結果放在了dox…

python super()(轉載)

一、問題的發現與提出 在Python類的方法&#xff08;method&#xff09;中&#xff0c;要調用父類的某個方法&#xff0c;在Python 2.2以前&#xff0c;通常的寫法如代碼段1&#xff1a; 代碼段1&#xff1a; class A:def __init__(self):print "enter A"print "…

Swagger+Spring mvc生成Restful接口文檔

2019獨角獸企業重金招聘Python工程師標準>>> Swagger 是一個規范和完整的框架&#xff0c;用于生成、描述、調用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統作為服務器以同樣的速度來更新。文件的方法&#xff0c;參數和模型緊密集成到服務器端…

JavaScript——變量與基本數據類型

前言 JavaScript中的變量為松散類型&#xff0c;所謂松散類型就是指當一個變量被申明出來就可以保存任意類型的值&#xff0c;就是不像SQL一樣申明某個鍵值為int就只能保存整型數值&#xff0c;申明varchar只能保存字符串。一個變量所保存值的類型也可以改變&#xff0c;這在Ja…