Eclipse中项目运行报错--JSTL

一、 org.apache.jasper.JasperException: This absolute uri http://java.sun.com/jsp/jstl/core) cannot be resolved in either web.xml or the jar files deployed with this application

  1.原因:明明已经添加进项目里面了,为什么还是报错,关键在于类加载器ClassLoader,单纯java项目与java web项目使用的类加载器不同。具体分析如下:

  ①对于纯java项目,它不存在WEB-INF目录,所以在引入jar包的时候一般都是通过buildpath直接引入,例如我要引入Hibernate,那么先定义一个user library,然后通过build path引入即可。

纯java项目使用的本地自己的JRE,那么classLoader在加载jar和class时候是分开的,对于我们自己编写的class,会在APP_HOME/bin下。导入的jar包或者user library的配置信息会出现在APP_HOME/.classpath文件中,ClassLoader会很智能去加载这些classes和jar。

  ②而对于web项目,虽然eclipse的workspace中仍然有.classpath文件,但即使你导入的了自己定义的user library,它也不会出现在.classpath中,这就是问题的关键。对于Javaweb项目,它最终不是通过本地的JRE去运行,而是部署到web 服务器,如Tomcat、Weblogic、WebSphere等,这些服务器都实现了自身的类加载器。

以Tomcat典型结果为例,它的目录结构分别对应四个不同的类加载器,关系如下:

    common      ---   CommonClassLoader

    server          ---    CatalinaClassLoader

    shared         ---    SharedClassLoader

    webapps     ---    WebappClassLoader

我们的 web 应用都是部署到 webapps 目录下,而WebappClassLoader加载器专门负责加载 webapps 下所有web项目的 WEB-INF 下的类库和类文件。而我们通过 user library 引入的 jar 包自然不会被 WebappClassLoader 加载器加载,所以才会出现 ClassNotFoundException 。

解决方法:

右键项目,选择properties

然后选择deployment assembly,在这里点击Add

点击Java Build Path Entries  -----》点击Next就可以看到自己用的到UserLibrary添加进来

添加完成后,页面显示如下图,在部署项目的时候,eclipse会将UserLibrary的所有jar包copy到tomcat的项目的lib目录下,这样就可以加载了

时间: 2024-10-20 14:40:21

Eclipse中项目运行报错--JSTL的相关文章

Eclipse中项目全部报错----项目全部打红叉的解决办法

今天遇到一个超级郁闷的事情,Eclipse新建的项目全部都打有红叉,我起初以为自 己可能是因为这两天一直在配置NDK开发环境方面的东西,是不是一不小心把那个地方给配置了,然后新建项目时项目都会出现红叉的效果.然后我clean了 一下,遭大糕了,所有的项目都出错了. 打开下面的错误提示: 错误的意思:Debug Certificate 过期了的缘故.百度了一下,果然也有遇到相似的问题,说是牵涉了一个私钥的时间期限问题. 解决办法是:进入:C:\Documents and Settings\Admi

eclipse 导入项目js报错问题

eclipse 导入项目js报错问题 eclipse 导入项目后会出现项目中的js文件报错(红叉),如下图所示,有时候报错的文件很多,需要集中处理. 解决办法:右键项目名称>Properties>JavaScript>Include Path,在右侧选择"Source"选项卡, 然后选择项目中的"Excluded"分支,在右侧点击"Edit",如下图所示: 在弹出的"Inclusion and Exclusion Pa

Eclipse中mvn install 报错error in opening zip file

报错信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project wms: Compilation failure [ERROR] Failure executing javac, but could not parse the error: [ERROR] 错误: 读取C:\Users\Administrato

关于sendkeys()方法在eclipse中编译期报错的解决方案

目前在学习selenium自动化测试,环境配置成功后,能正常调用谷歌浏览器访问网页,并获取页名.在进行下一步学习时,定位元素,并使用元素的方法. 当使用sendkeys()这个方法时,一直提示报错,代码如下: public class Demo04 { public static void main(String[] args) { System.out.println("1111"); System.setProperty("webdriver.chrome.driver&

CrossApp项目在Eclipse中进行编译报错解决方案

1. 导入Android工程后,若java代码报错,缺少相应的java 文件,则拷贝CrossApp-master\CrossApp\platform\android\java\src目录下文件到工程的src目录下. 2.若提示编译工具NDK有问题,则在项目名上右键,选择最下方的Properties,打开配置页面,选中C/C++ Build ,在Build command中将你自己的ndk目录下的ndk-build.cmd的路径粘贴进去,再选择OK即可. 3.也是容易忘的一个错误,初次编译,可能

【转】eclipse新建项目,报错“Error: workspace\appcompat_v7\res\values-v21\styles_base.xml No resource found that matches the given name”

原文网址:http://www.cnblogs.com/mbp-study/p/5268478.html 新建项目报错,不知道为什么,以前从未出现过的错误,把sdk更新之后,出现莫名错误,自己也是一知半解,在网上找了好久的错误,终于在一个english网站找到了解决方法,soga,从未觉得english如此美好 错误信息如下 ....\appcompat_v7\res\values-v21\styles_base.xml:75: error: Error retrieving parent fo

Eclipse中启动Tomcat报错(struts2应用开发)

今天开始接触struts2,完成应用后一大堆报错,其实通过[项目]->[右键]->[build path]->[configure build path]改相应的配置就能够改正所有错误了.很多错误可以通过网上搜素改正.通过纠正这些错误也有助于你更好的理解开发strut2的一些配置. 解决了所有错误后,启动tomcat服务器网页总是报错.这时候可以去看看Console的一些信息,会发现以下错误: 严重: Exception starting filter struts2 java.lang

mvc 项目运行报错检查web.config

最近写mvc项目,只是一个简单的添加信息管理信息列表的网站程序,当我挂在iis7.0上时候运行发现报错,请求问题导致,后来我在我的配置文件里加了一句话解决了. <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <validation validateIntegratedModeConfiguration="false" /> <ha

创建springboot2.1项目运行报错

刚创建好一个项目,运行就报错:in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/,然后百度了一下说maven没有这个jar,进仓库看了发现真的没有,然后就去下了一个 <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging-api</art