org.apache.jasper.JasperException:Unable to read TLD "META-INF/c-1_0-rt.tld" from JAR file jstl-1.2.jar

时间:2021-12-03 14:32:07

前两天把项目从eclipse EE版搬到MyEclipse中了。配置好jdk,确定build path中没有报错后,在tomcat中运行。结果,报错:

 org.apache.jasper.JasperException: /common/error.jsp(12,0) Unable to read TLD "META-INF/c-1_0-rt.tld" from JAR file "file:/E:/apache-tomcat-6.0.29/webapps/flex/WEB-INF/lib/jstl-1.2.jar": org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV

上网查并询问同事之后,得知原因是:我们的项目下存在jsp-api.jar和servlet-api.jar,同时,tomcat下的lib文件下,也存在这两个文件,如图:

org.apache.jasper.JasperException:Unable to read TLD "META-INF/c-1_0-rt.tld" from JAR file jstl-1.2.jar

我们项目中的这两个jar包和tomcat中自带的jar包冲突了。只要在项目build path中去掉这两个jar包,使它们不被加载编译就行,不需要在项目中删除这两个jar包。

我们项目中的这两个jar包是当项目部署到Weblogic上时使用的,所以在build path中去掉,不会影响。

我很奇怪的是为啥在eclipse下运行的时候没有这个问题……

然后,我启动项目,又报错了:

 java.lang.Error: Unresolved compilation problems

编译错误。我对比了eclipse和MyEclipse中的compiler,在eclipse中:

  菜单window→properties→搜索compiler,查看,compiler是1.6,

                 installed JREs,1.6

  项目→右击→properties→搜索compiler,查看,compiler是1.6

在MyEclipse中:

  菜单window→properties→搜索compiler,查看,compiler是1.6,

                 installed JREs,1.6

  项目→右击→properties→搜索compiler,查看,compiler是1.6

配置一样。只能试着修改一下,我把MyEclipse的compiler改成1.5,启动项目,运行正常了。在浏览器中打开也正常了。