"PWC6345:调用javac时出错." 使用Jetty WTP插件在Jetty上部署JSP页面时出错

Jon*_*nas 36 windows jsp jetty eclipse-wtp

我正在尝试使用Eclipse 的Jetty WTP插件Jetty上部署JSP页面.但我得到以下错误.它看起来像Jetty找不到javac.我是否需要为Eclipse中的Jetty WTP插件执行任何设置,或者如何解决此问题?

如果我将项目作为.war-file 导出到jetty\webapps然后手动启动Jetty ,JSP页面工作正常java -jar start.jar.但是如果我按照描述使用Eclipse的Jetty WTP插件进行部署,它就不起作用.

我有我的JAVA_HOME设置C:\Program Files (x86)\Java\jdk1.7.0_01,我在Windows 7上使用Jetty 8.0.4.

Servlet在当前设置下运行良好.有关如何为JSP页面解决此问题的任何建议?

HTTP ERROR 500
Problem accessing /MyJavaWeb/formProcess. Reason: 

    PWC6345: There is an error in invoking javac.  A full JDK (not just JRE) is required

Caused by:
org.apache.jasper.JasperException: PWC6345: There is an error in invoking javac.  A full JDK (not just JRE) is required
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:378)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:119)
    at org.apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompiler.java:208)
    at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:384)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:558)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:488)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:973)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:907)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:271)
    at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:98)
    at com.example.FormProcessServlet.doPost(FormProcessServlet.java:39)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:558)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:488)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:483)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:973)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:907)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
    at org.eclipse.jetty.server.Server.handle(Server.java:346)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:442)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:941)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
    at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

Jon*_*nas 41

正如Jan Bartel所说,来自Jetty:如何配置JSP:

通过start.ini在Eclipse 中的-file中添加以下行,它可以正常工作.

-Dorg.apache.jasper.compiler.disablejsr199=true
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 对于使用嵌入式Jetty并且没有要编辑的start.ini的人,只需在启动Jetty服务器之前设置此系统属性:System.setProperty("org.apache.jasper.compiler.disablejsr199","true"); (9认同)

Abd*_*ull 25

我也碰巧突然得到org.apache.jasper.JasperException: PWC6345我的Eclipse安装和Jetty Maven插件(我用它从Eclipse中启动Jetty).

原因是我之前不久更新了我的JDK安装.在Eclipse内部,这导致将" 已安装的JRE " 更改为指向普通JRE安装而不是完整的JDK安装.Jasper需要JDK安装,因为Jasper需要javac(JRE不提供).

就我而言,解决方案是为Eclipse提供JDK安装.为此,请选择Window - > Preferences - > Java - > Installed JREs.在这里,单击Add ...,然后指向您的JDK安装(在我的情况下,JRE home应该指向C:\Program Files (x86)\Java\jdk1.7.0_17).单击完成.然后返回Installed JREs概述,删除旧的JRE引用选择新添加的JDK安装.


Pet*_*erg 5

使用Run-Jetty-Run插件运行webapp时出现PWC6345错误.

修复方法是更改​​"首选项"中的"执行环境"设置.由于我使用的是java 7,我需要更改JavaSE-1.7的设置.可能其他执行环境的行为也类似.

窗口 - >首选项 - > Java - >已安装的JRE - >执行环境

选择左侧的JavaSE-1.7 - >选择右侧的*jdk*1.7.x_xx