【问题标题】:Jetty Runner, Servlet Filter and org.apache.jasper.JasperException: PWC6345Jetty Runner、Servlet 过滤器和 org.apache.jasper.JasperException:PWC6345
【发布时间】:2015-03-16 14:51:29
【问题描述】:

我很绝望。我在这里阅读了有关此问题的所有主题,但没有帮助。 我编写了一个简单的应用程序并尝试使用 Jetty Runner 运行它。它在我的本地机器上运行良好。但在那之后,我尝试添加 servlet 过滤器(因为 Jetty 在welcome-file-list 上存在 servlet 问题)。现在它打印给我:

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

我的 JDK 和 JAVA_HOME 正常。我正在使用 jdk1.8.0_25。

我读到:

<Call class="java.lang.System"  name="setProperty">
        <Arg>org.apache.jasper.compiler.disablejsr199</Arg>
        <Arg>true</Arg>
</Call>

-Dorg.apache.jasper.compiler.disablejsr199=true

我遇到了这个问题:

org.apache.jasper.JasperException: PWC6349: Cannot find a java compiler for compilation.  If running with JDK 5 or before, Ant or JDT compiler can be used, if the corresponding jars and bridge classes (org.apache.jasper.compiler.AntJavaCompiler or org.apache.jasper.compiler.JDTJavaCompiler) are included

我正在使用 IDEA、Maven 和 .sh 文件来运行 Jetty。

java -jar target/dependency/jetty-runner.jar target/*.war

奇怪的是 - 我尝试在 Heroku 上部署这个带有 servlet 过滤器的应用程序,它运行良好

你能帮我解决这个问题吗?

【问题讨论】:

    标签: java servlets servlet-filters embedded-jetty runner


    【解决方案1】:

    将 -Dorg.apache.jasper.compiler.disablejsr199 设置为 false 并确保您在路径上使用 jdk,这意味着您的路径应类似于“C:\Program Files\Java\jdk1.7.0_67\bin”而不是 C :\Program Files\Java\jre\bin。

    【讨论】:

    • 它应该可以工作。确保您使用此命令来启动您的应用程序:“java -jar -Dorg.apache.jasper.compiler.disablejsr199=false target/dependency/jetty-runner.jar target/*.war”。而且正如我在答案中提到的,请检查您的 java 路径。它应该指向“jdkxxx\bin”而不是“jre\bin”。
    猜你喜欢
    • 2015-04-18
    • 2012-01-03
    • 2014-10-03
    • 2013-05-05
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多