web工程中添加自建userLibary与将jar包放到lib文件夹下的区别

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

  [html] view plaincopy  <?xml version="1.0" encoding="UTF-8"?>  <classpath>  <classpathentry kind="src" path="src"/>  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6"/>  <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Spring3.1.0"/>  <classpathentry kind="lib" path="E:/Jar_Framework/cglib/cglib-2.2.2.jar" sourcepath="E:/Jar_Framework/cglib/cglib-src-2.2.2.jar"/>  <classpathentry kind="lib" path="E:/Jar_Framework/commons-logging-1.1.1-bin/commons-logging-1.1.1/commons-logging-1.1.1.jar"/>  <classpathentry kind="lib" path="E:/Jar_Framework/aopalliance-1.0/aopalliance-1.0.jar"/>  <classpathentry kind="lib" path="E:/Jar_Framework/cglib/cglib-nodep-2.2.2.jar"/>  <classpathentry kind="lib" path="E:/Jar_Framework/spring revelant/aspectj-1.6.12.jar"/>  <classpathentry kind="lib" path="E:/Jar_Framework/spring revelant/aspectjweaver-1.6.8.jar"/>  <classpathentry kind="lib" path="E:/Jar_Framework/spring revelant/asm-3.2.jar"/>  <classpathentry kind="output" path="bin"/>  </classpath>

  这 样ClassLoader就会正确的找到所有需要的类。  Java Web项目  而对于java web项目,就不一样了,虽然eclipse的workspace中仍然有.classpath文件,但即使你导入的了自己定义的user library,它也不会出现在.classpath中,这就是问题的关键。这到底是为什么呢?  对于java web项目,它最终不是通过本地的JRE去运行,而是部署到web 服务器,如Tomcat、Weblogic、WebSphere等,这些服务器都实现了自身的类加载器。  以 Tomcat典型结果为例,它的四组目录结构  common  server  shared  webapps  对应四个不同的自定义类加载器  CommonClassLoader  CatalinaClassLoader  SharedClassLoader  WebappClassLoader  WebappClassLoader加载器专门负责加载webapps下面各个web项目的WEB-INF下的类库。而我们通过user library引入的jar包自然不会被WebappClassLoader加载器加载,所以必然会报ClassNotFoundException。
时间: 2024-12-12 12:02:05

web工程中添加自建userLibary与将jar包放到lib文件夹下的区别的相关文章

Eclipse 将工程Build Path中引用的jar包自动拷贝到WEB-INF下的lib文件夹下

在用用 Eclipse进行Java Web开发时,web应用中引用的jar需要拷贝到WEB-INF下的lib文件夹下,否则经常出现ClassNotFound异常. 通过下面方法,可以不用手动拷贝jar包,Eclipse自动将工程Build Path中引用的jar包自动拷贝到WEB-INF下的lib文件夹下,过程如下: 1.右击工程,选择Properties(属性) 选择Deployment Assembly,如下图: 2.点击右侧Add按钮,如下图: 3.选择Java Building Path

Eclipse for javaee中开发web项目,jar包必须放到/WEB-INF/lib文件夹下

1.tomcat应用服务器,它有其自己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的路径去找相应的lib下的jar文件 2.使用eclipse javaee IDE时,会将WEB-INF/lib中所有的lib自动加入到library中 3.eclipse工程下的library是用来编译里面的src中java文件的,实际发布到tomcat时,仅仅只复制了WEB-INF/lib里面的jar包,所以出现eclipse可以正常编译但tomcat运行是找不到类 4.你

工程中添加工程依赖 Xcode iOS

有时我们需要在一个主工程中添加其他的子工程,用来对子工程进行编写修改或者是利用子工程中的库文件等等操作,这时候我们需要用到工程的嵌套. 步骤:(看图说话) 1.新建主工程,名为TestTTTT,新建一个static framework 工程,工程名为MyLibrary.把两个工程文件放到一个文件夹下,如下图: 2.在TestTTTT中执行下面操作:子工程左下角"+"里面执行Add file to 找到MYLibrary中的工程文件添加. 3.添加依赖: 4.添加路径 5.大功告成,现在

如何编写一个工程文件夹下通用的Makefile

新建工程文件夹,在里面新建 bsp.imx6ul.obj 和project 这 3 个文件夹,完成以后如图所示: 新建的工程根目录文件夹 其中 bsp 用来存放驱动文件:imx6ul 用来存放跟芯片有关的文件,比如 NXP 官方的 SDK库文件:obj 用来存放编译生成的.o 文件:project 存放 start.S 和 main.c 文件,也就是应用文件:将十二章实验中的 cc.h.fsl_common.h.fsl_iomuxc.h 和 MCIMX6Y2.h 这四个文件拷贝到文件夹 imx6

step4---&gt;往工程中添加Spring框架----&gt;修改maven的配置文件pom.xml,向工程中添加spring框架的某些模块

1.本文内容: 本文介绍使用maven向自己的项目中添加各种框架的方法,即如何配置maven的pom.xml来让maven帮助管理这些框架(包括Spring.SpringMVC.hibernate框架等等). 2.使用maven向自己的工程中添加框架: 2.1概述 若想使用maven向自己的工程中添加三方框架(如Spring.SpringMVC等),需要先确保你的工程是maven工程,如果你还不知道该如何在myeclipse中建立一个maven web project,请参考相关教程. 2.2使

如何在Web工程中实现任务计划调度

转载自: http://www.oschina.net/question/146385_37793?sort=time 下面就Servlet侦听器结合Java定时器来讲述整个实现过程.要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,同时实现它的contextInitialized(ServletContextEvent   event)和contextDestroyed(ServletContextEvent   event)两个接

如何在web项目中添加javamelody monitoring 监控。

1.在工程的maven pom中添加依赖javamelody-core <!-- monitoring监控 --><!-- https://mvnrepository.com/artifact/net.bull.javamelody/javamelody-core --><dependency> <groupId>net.bull.javamelody</groupId> <artifactId>javamelody-core<

idea maven web工程明明添加了maven lib的依赖,但启动web容器时始终报No Class Found?

很久没用idea搭新工程,最近自己想做个东西,冲心搭个web工程,jar包都用maven刷好了,而且也将jar包添加至web module的Dependences里头了,但启动web容器始终报No Class Found,问题出在哪了,就出在添加jar包和配置Artifacts Explore的顺序弄反了,因为在添加发布包Artifacts Explore时jar包依赖还没配置,即使后面配置了也会找不到,正确顺序应该是: 1.先添加module Dependences jar包依赖 2.添加发布

step4-----&gt;往工程中添加Spring的子项目spring IO Platform-------&gt;通过maven添加相关框架(pom.xml)

添加Spring IO Platform的目的: 避免自己的project的外部依赖(external dependencies)之间产生版本冲突问题.更多详细信息参见:Spring IO Platform概述 具体操作步骤: step1,往自己的工程中添加Spring IO Platform 编写project的pom.xml,添加如下代码,引入Spring IO Platform <dependencyManagement> <dependencies> <depende