jar包直接拷贝到WEB-INF/lib下和以userLibrary形式引入的区别?/jar包放置在WEB-INF/lib下和通过build path导入的区别是什么?...

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

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

 

<?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项目,就不一样了,虽然eclipse的workspace中仍然有.classpath文件,但即使你导入的了自己定义的user library,它也不会出现在.classpath中,这就是问题的关键。这到底是为什么呢?

  对于java web项目,它最终不是通过本地的JRE去运行,而是部署到web 服务器,如Tomcat、Weblogic、WebSphere等,这些服务器都实现了自身的类加载器。以 Tomcat典型结果为例,它的四组目录结构common、server、shared、webapps分别对应四个不同的自定义类加载器 CommonClassLoader、CatalinaClassLoader、SharedClassLoader和 WebappClassLoaderWebappClassLoader加载器专门负责加载webapps下面各个web项目的WEB-INF下的类库。而我们通过user library引入的jar包自然不会被WebappClassLoader加载器加载,所以必然会报ClassNotFoundException。

原创http://hi.baidu.com/oritenson/blog/item/8c62adecf5aacdf0cf1b3e66.html

向eclipse中添加user library的方式 NULL 博文链接:https://duqiangcise.iteye.com/blog/769704 立即下载

相关推荐

开发Servlet时WEB-INF下面的lib目录下缺jar的表现

写一个最简单的Servlet,运行时出错,404,还有无法LoadClass。一些错误信息如下: 找了半天原因,最后觉得是WEB-INF下面的lib目录下缺相应的jar导致的。将两个涉及的JAR放到这个目录下,就可以了。 这两个是基础性的jar,但是缺乏了也是会出运行时错误: javax.servlet-5.1.12.jar commons-i

qxd100的博客 1482

myeclipse工程中library web-inflib区别

eclipse工程下的library是用来编译里面的src中java文件的 实际发布到tomcat时,仅仅只复制了WEB-INF/lib里面的jar,所以出现eclipse可以正常编译但tomcat运行是找不到类, 如果你是用的eclipse j2ee IDE,你去WorkSpace\.metadata\.plugins\**.server.core\wtpwebapps找到运行时发布的工程

nothing0318的专栏 8343

JAR放在WEB-INF/lib子目录报ClassNotFoundException解决方案

对于Java Web应用依赖的jar,我们通常会放到WEB-INF/lib目录下,但是笔者喜欢把不同框架的jar放在不同的子目录下,例如新建一个struts目录存放struts框架的jar等。  下面是笔者项目结构截图:    但是这样会有一个新的问题,项目部署的后启动会报ClassNotFoundException错误:  例如笔者在web.xml配置了spring的监听器:

ly199108171231的博客 1161

java web项目中classes文件夹下的classWEB-INF/libjar里的class文件加载顺序

如果是发布到weblogic的话,可以在WebContent\WEB-INF\weblogic.xml里面配置。 参考配置如下: http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/

feng200711021053的专栏 1万+

webinf下面的lib文件build_转:jar放置WEB-INF/lib通过build path导入区别是什么?...

转自:http://s343174147.iteye.com/blog/1986307jar直接拷贝到WEB-INF/libuserLibrary形式引入区别jar放置WEB-INF/lib通过build path导入区别是什么?问题: 1、web找不到 2、maven项目转变web项目通过 Deployment Assembly把架添加到WEB-INF/lib引起的架...

weixin_34112863的博客 313

jar放置WEB-INF/lib通过build path导入区别是什么?

jar直接拷贝到WEB-INF/libuserLibrary形式引入区别jar放置WEB-INF/lib通过build path导入区别是什么?问题: 1、web找不到 2、maven项目转变web项目通过 Deployment Assembly把架添加到WEB-INF/lib引起的架冲突 通俗的讲是classLoader有关,对于纯java项目,它不存在W...

s343174147的博客 616

Eclipse 中如何配置User Library(用户自定义库)

Eclipse 中的Java用户库,将一个或多个关联的jar 归类在一起,相当于一个里面含多个jar 文件, 这样在Eclipse项目中就可以快速使用了。

oscar999的专栏 2762

set USER_LIBRARY in eclipse

<br />1) org.eclipse.jdt.USER_LIBRARY setting can be found at <br />D:/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs<br /><br />OR<br /><br />2) You can also export the old workspace's USER_LIBRARY to a file fir

bswangjian的专栏 396

部署

通俗的讲是classLoader有关,对于纯Java项目,它不存在WEB-INF目录,所以在引入jar的时候一般都是通过buildpath直接引入,例如我要引入Spring3X,那么先定义一个user library,然后通过build path引入。 纯 java项目 使用的本地自己的JRE,那么classLoader在加载jarclass时候是分开的,对于我们自己编写的class,会...

weixin_30642029的博客 256

直接把架倒在lib里面添加在项目目录里面有什么区别

通俗的讲是classLoader有关,对于纯java项目,它不存在WEB-INF目录,所以在引入jar的时候一般都是通过buildpath直接引入,例如我要引入Spring3X,那么先定义一个user library,然后通过build path引入。 纯 java项目使用的本地自己的JRE,那么classLoader在加载jarclass时候是分开的,对于我们自己编写的class,会在

crazy_leega的专栏 1305

Eclipse user library位置

原因: 转自:http://happycoolyp.iteye.com/blog/1853135 user libraries的记录文件%eclipse_workspace%\.metadata\.plugins\org.eclipse.core.runtime\.settings 目录下面的org.eclipse.jdt.core.prefs配置文件存放的全局user library配置。 ...

weixin_34075268的博客 377

eclipse部署时候不拷jarweb-inf下面的lib目录解决办法

前段时间在做项目的时候,用eclipse构建的maven工程部署到tomcat下面去时,发现tomcat的web-inf下面的lib目录是空的,当时弄了好长时间,最后实在没辙了,就手动把所有的依赖拷到web-inflib下面去,但是每次重新部署时,eclipse自动部署又将lib目录清空,当时那叫一个郁闷,后来我看了下别人的classpath文件,发现我的classpath跟别人的不同点 

u014268591的博客 2709

将项目依赖的jar,复制到lib文件夹中

<!-- 将工程依赖的jar,复制至target/lib目录下进行管理,方便已生成jar的工程进行引用。 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId>...

boboxu 2439

eclipse中创建userlibrary及其使用

eclipse中创建userlibrary及其使用在之前项目中你的做法可能是这样、将所需的jar放在项目的lib目录下、之后在build path引入所需jar。这样一来你点开某一项目的时候、可能会看到长长的jar list。通过使用user library 来创建类似JRE System Libary的类库,在该库中可以添加所需jar或者自己的jar,这样在使用的时候就只需要导入该库即可

我在山城重庆,我希望能为这片软件沙漠地带贡献自己的一滴水,Stay tuned! 4334

关于Tomact的User library与WEB-INF/lib的关系

转自:http://blog.csdn.net/u012794845/article/details/52711351 eclipse工程下的library是用来编译里面的src中java文件的 实际发布到tomcat时,仅仅只复制了WEB-INF/lib里面的jar,所以出现eclipse可以正常编译但tomcat运行时找不到类,  refernced Lib

qq_32998153的博客 520
上一篇: WPF使用--数据编辑GridView
下一篇: jQuery实例——选项卡的实现
weixin_34235105
博客等级 码龄11年 4224粉丝 152原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值