开发者社区> 问答> 正文

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

在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)

展开
收起
a123456678 2016-06-15 11:38:21 3799 0
2 条回答
写回答
取消 提交回答
  • 项目里有jsp文件吧,jsp编译的时候需要使用jdk的###### jre只是运行时环境
    jdk才是项目真正需要的环境。
    如果你的jre都可以跑项目, 那用jdk一定可以跑, 可以直接将java_home指向jdk。
    如果你有各种担心的话也可以在报错项目对应的tomcat启动脚本里面单独指定java_home,
    export JAVA_HOME = /xx/xxxx/xxxxx
    export CLASSPATH=/xx/xx/xxxxx
    export PATH = /xxx/xxxx/xxxx:%PATH ######正解,把JAVA_HOME JRE_HOME 环境变量设置到CLASSPATH中###### 你这种错误,一般都是模板编译出问题了,JRE是不等价与JDK环境的,主要区别就在于JDK环境有一些编译工具。一般来说,服务器只需要装了JRE就可以运行tomcat了,但也有例外。
    比如,HTTL 这个模板引擎,需要调用javac来编译模板为class文件,所以必须有JDK才能运行。如果没有JDK环境,也可以用JRE环境+javassist.jar 这个工具来代替javac编译模板为class文件。
    不少编译型的模板引擎都是这样的。JSP编译是否需要JDK,我也不太确定。
    如果你的环境确实不方便更改,可以在lib目录下加上javassist.jar试试。 ###### 用的是哪个版本的tomcat啊?
    起码从tomcat 5.5开始,就带有ecj-*.jar,里面带的就是eclipse的JDT编译器了。按道理,带有ecj的tomcat发布版,应该有可以在JRE中支持jsp等需要编译的webapp了。
    请把环境再说明清楚一些? ######7.0.27

    2020-06-03 10:31:14
    赞同 展开评论 打赏
  • 你这种错误,一般都是模板编译出问题了,JRE是不等价与JDK环境的,主要区别就在于JDK环境有一些编译工具。一般来说,服务器只需要装了JRE就可以运行tomcat了,但也有例外。

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

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

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

    2019-07-17 19:39:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载