开发者社区> 问答> 正文

在Linux下,JAVA_HOME指向JRE时,tomcat启动后有一个项目报org.apache.jasper.JasperException: java.err.nojdk

a123456678 2016-06-15 11:38:21 1088

在Linux下,JAVA_HOME指向JRE时,tomcat启动后有一个项目报org.apache.jasper.JasperException: java.err.nojdk,其他项目可以启动,其实将JAVA_HOME指向JDK时是可以启动的,但运行环境是JRE不能随便更改,请问是项目中某个lib需要JDK才能运行还是一些其他什么问题?具体错误消息:

org.apache.jasper.JasperException: java.err.nojdk
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:89)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:375)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:116)
    org.apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompiler.java:198)
    org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:364)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:433)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:476)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:366)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Java 应用服务中间件 Linux
分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:39:01

    你这种错误,一般都是模板编译出问题了,JRE是不等价与JDK环境的,主要区别就在于JDK环境有一些编译工具。一般来说,服务器只需要装了JRE就可以运行tomcat了,但也有例外。

    比如,HTTL 这个模板引擎,需要调用javac来编译模板为class文件,所以必须有JDK才能运行。如果没有JDK环境,也可以用JRE环境+javassist.jar 这个工具来代替javac编译模板为class文件。

    不少编译型的模板引擎都是这样的。JSP编译是否需要JDK,我也不太确定。

    如果你的环境确实不方便更改,可以在lib目录下加上javassist.jar试试。

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题