4
回答
在Linux下,JAVA_HOME指向JRE时,tomcat启动后有一个项目报org.apache.jasper.JasperException: java.err.nojdk
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

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

举报
波丶
发帖于3年前 4回/2K+阅
共有4个答案 最后回答: 3年前

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

--- 共有 1 条评论 ---
卧龙小正解,把JAVA_HOME JRE_HOME 环境变量设置到CLASSPATH中 3年前 回复

你这种错误,一般都是模板编译出问题了,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了。

请把环境再说明清楚一些?

--- 共有 1 条评论 ---
波丶7.0.27 3年前 回复
顶部