今天在尝试使用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>