Unable to compile class for JSP

使用myeclipse开发项目,部署的到tomcat中运行。调用jsp文件时错误

type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception   org.apache.jasper.JasperException: Unable to compile class for JSP: 

因为项目中有像jsp-api.jar servlet-api.jar跟tomcat6的lib中同样的包,但版本比tomcat6的版本要低,在运行的时候,因为会优先加载项目中的包,所以 产生了错误,把项目中和tomcat相同的包删除,问题就可以解决了。但我的项目中是引用的myeclipse提供的j2ee1.4包。.classpath文件中是打包引入的com.genuitec.eclipse.j2eedt.core.J2EE14_CONTAINER,单独将jsp-api.jar和servlet-api.jar去除不好,而完全将j2ee1.4去掉也不行,项目将编译错误。

解决方法就是将j2ee1.4换成了j2ee5(如果你的还不行就换j2ee6),只要比你的tomcat的lib包中版本高就可以了。


通过学习了解了.classpath 文件中

<classpathentry kind="con" path="com.genuitec.eclipse.j2eedt.core.J2EE14_CONTAINER"/>
这句是表示程序的运行环境 kind="con"---表示classpath的类型,con即是container,就是程序运行的容器,或者就说是运行环境也OK,它实际上是在Myeclipse最初的时候要配置installed JREs中指定(一般情况下我们指定的是JDK),但是这里实际使用的是JDK下的JRE中的jar包,就是JDK_HOME/jre/lib就是对应的这条语句。它是包含了J2EE1.4服务器要使用到的一些jar包,这个目录中的jar包很特殊,那就是它不会在部署项目的时候部署到服务器上去,因为myeclipse认为这样的jar包是服务器应该有的,所以这里有时候会出现问题,就是开发的时候不出现问题,但是部署之后会出错。所以我认为还是要了解你要部署的环境,尽量使开发时的环境版本与部署版本相同或高于部署版本。这样就不会在部署时出错了。

你可能感兴趣的:(apache,tomcat,jsp,J2EE)