今天在tomcat(7.0.8)上運(yùn)行一本書的JSP源代碼時(shí),出現(xiàn)如下錯(cuò)誤:?
?2 ?
?3 ? An?error?occurred?at?line:? 23 ?in?the?generated?java?file
?4 ? The?method?getJspApplicationContext(ServletContext)?is?undefined?for?the?type?JspFactory
?5 ?
?6 ? Stacktrace:
?7 ? ????org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java: 95 )
?8 ? ????org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java: 330 )
?9 ? ????org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java: 457 )
10 ? ????org.apache.jasper.compiler.Compiler.compile(Compiler.java: 367 )
11 ? ????org.apache.jasper.compiler.Compiler.compile(Compiler.java: 345 )
12 ? ????org.apache.jasper.compiler.Compiler.compile(Compiler.java: 332 )
13 ? ????org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java: 594 )
14 ? ????org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java: 342 )
15 ? ????org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 391 )
16 ? ????org.apache.jasper.servlet.JspServlet.service(JspServlet.java: 334 )
17 ? ????javax.servlet.http.HttpServlet.service(HttpServlet.java: 722 )
18 ?
19 ?
?
?
?
查看Tomcat的Log,發(fā)現(xiàn)如下錯(cuò)誤:??
?2 ? java.lang.Exception:? Socket?bind?failed:? [ 730048 ] ?Only?one?usage?of?each?socket?address?(protocol/network?address/port)?is?normally?permitted.??
?3 ? ????at?org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java: 408 )
?4 ? ????at?org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java: 511 )
?5 ? ????at?org.apache.coyote.AbstractProtocolHandler.init(AbstractProtocolHandler.java: 345 )
?6 ? ????at?org.apache.catalina.connector.Connector.initInternal(Connector.java: 910 )
?7 ? ????at?org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java: 101 )
?8 ? ????at?org.apache.catalina.core.StandardService.initInternal(StandardService.java: 559 )
?9 ? ????at?org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java: 101 )
10 ? ????at?org.apache.catalina.core.StandardServer.initInternal(StandardServer.java: 778 )
11 ? ????at?org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java: 101 )
12 ? ????at?org.apache.catalina.startup.Catalina.load(Catalina.java: 572 )
13 ? ????at?org.apache.catalina.startup.Catalina.load(Catalina.java: 595 )
14 ? ????at?sun.reflect.NativeMethodAccessorImpl.invoke0(Native?Method)
15 ? ????at?sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 39 )
16 ? ????at?sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 25 )
17 ? ????at?java.lang.reflect.Method.invoke(Method.java: 597 )
18 ? ????at?org.apache.catalina.startup.Bootstrap.load(Bootstrap.java: 263 )
19 ? ????at?org.apache.catalina.startup.Bootstrap.main(Bootstrap.java: 431 )
?
?
開始以為是Server的配置有問(wèn)題,網(wǎng)上搜了一下,發(fā)現(xiàn)都說(shuō)是Tomcat開了多個(gè)造成,或者是JSP的code有問(wèn)題。
但是自己又試了試Tomcat自帶的JSP,人家的jsp運(yùn)行的好好的。
所以覺(jué)得Tomcat應(yīng)該沒(méi)有什么配置上的問(wèn)題。
后來(lái)查到這本書帶的源代碼中的build.xml文件,是這樣設(shè)置的:?
?2 ? ?? < property? name ="src" ?value ="WEB-INF/src" ? />
?3 ? ?? < property? name ="classes" ?value ="WEB-INF/classes" ? />
?4 ? ?? < property? name ="lib" ?value ="WEB-INF/lib" ? /> ?
?5 ? ?? < property? name ="dist" ?value ="dist" ? />
?6 ? ??
?7 ? ?? < path? id ="task.classpath" >
?8 ? ???? < pathelement? location ="${classes}" ? />
?9 ? ???? < pathelement? location ="${lib}" ? /> ?
10 ? ????
11 ? ???? <!-- ? Tomcat?5.0.16 ? Servlet?2.4?API? -->
12 ? ???? < pathelement? location ="${lib}/servlet-api.jar" ? />
13 ? ????
14 ? ???? <!-- ? Tomcat?5.0.16? JSP?2.0?API? -->
15 ? ???? < pathelement? location ="${lib}/jsp-api.jar" ? />
16 ? ????
17 ? ?? </ path >
?
?
?
這Tomcat的版本比我的要老的多啊。
后來(lái)用tomcat的Lib目錄下的這兩個(gè)jar包替換掉之后,就好了。 JSP就可以編譯運(yùn)行了。
?
總結(jié)一下,“ Unable?to?compile?class?for?JSP ” 八成和編譯用的 “ jsp-api.jar ”是有關(guān)系的。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
