今天在尝试使用jetty7+cometd+spring的archetype建立工程时,无法按照reference预期的出现正常的访问结果,出现了org.apache.jasper.JasperException: java.err.nojdk。
org.apache.jasper.JasperException: java.err.nojdk
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:89)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:375)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
at org.apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompiler.java:198)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:364)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:433)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:476)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:366)
这个看起来应该是在解析JSP的时候遇到了没有JDK的问题,上网查了查,大多数人只是说不要只用jre,要用jdk,蛋碎,似乎是个bug,不过还好可以通过下面的参数解决。、
如果使用的是自己的jetty服务器,而不是maven的jetty plugin,就在Jetty下的start.ini中增加配置
org.apache.jasper.compiler.disablejsr199=true
如果使用的是maven的plugin,就修改jetty的plugin configuration如下
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.6.8.v20121106</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<systemProperties>
<systemProperty>
<name>org.apache.jasper.compiler.disablejsr199</name>
<value>true</value>
</systemProperty>
</systemProperties>
<webAppConfig>
<contextPath>/vem</contextPath>
</webAppConfig>
</configuration>
</plugin>