2012-07-09 38 views
0

我們剛剛從地鐵升級到最新的jax-ws代碼,但由於某種原因,我們現在不得不運送螞蟻。這似乎是jsp編譯所需的。Jetty + jax-ws影響jsp編譯 - 它現在需要ant嗎?

沒有它,我們得到

java.lang.NoClassDefFoundError: org/apache/tools/ant/BuildListener 
    at org.apache.jasper.compiler.Compiler.initJavaCompiler(Compiler.java:742) 
    at org.apache.jasper.compiler.Compiler.<init>(Compiler.java:131) 
    at org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:288) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:605) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:360) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440) 
    ...... 

有什麼辦法,以消除螞蟻的依賴?

jax-ws如何影響未更改的jsp庫?

感謝 尼爾

+1

它是使用ant而不是Metro的Jasper(JSP編譯器)。 – 2012-07-09 15:32:00

+0

我們沒有改變jsp jar只有jax-ws jar。不知何故,看起來jax-ws會更改默認使用的編譯器。 – 2012-07-09 15:40:48

+0

你能提供的最小的例子是什麼? – 2012-07-09 15:44:00

回答

0

碼頭規定的「編譯器 - 在運行時確定碼頭是Eclipse JDT編譯器。」見http://docs.codehaus.org/display/JETTY/Jsp+Configuration

看來,在我們的構建過程中,core-3.1.1.jar沒有被打包(這一定是由jax-ws更改引起的)。當缺少這個時,jetty沒有任何警告,相反jasper會回到嘗試使用ant(這會導致類未找到異常)。

當我手動將core-3.1.1.jar包含到安裝中時,jsp編譯工作。

+1

我建議你在你的集成測試套件中定期自動運行Web服務器的健全性檢查。 – 2012-07-09 16:58:51