把jar包拷到WEB-INF/lib和放到工程之外的路径作为library引用有什么不同?

时间:2021-02-11 09:19:47
目前只是在本机调试,为什么放到WEB-INF/lib里面没问题,作为library加入工程就不能用?

36 个解决方案

#1


因为前面是包是跟着项目走的

#2


路径 路径 路径!!!!!!!!自己看jar包的路径

#3


在本地引用外部的jar包没问题。换一个地方发布就会报错了。。

#4


你看看的jar包的路径还是对的吗?

#5


引用 1 楼 damokelis 的回复:
因为前面是包是跟着项目走的

我还没有发布,就是在自己机器上调试

#6


应该会有些区别
比如tomcat应用服务器,它有其自己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的规范去找相应的lib,这就是为什么我们发布的WEB应用要符合那个格式

#7


引用 2 楼 yeqing4562011 的回复:
路径 路径 路径!!!!!!!!自己看jar包的路径

路径肯定没问题啊,不加library的时候编译不过的java类加了library就没有红叉了,但是运行时候找不到jar里的类啊

#8


引用 3 楼 kouyisc 的回复:
在本地引用外部的jar包没问题。换一个地方发布就会报错了。。

我在本地引用也报错

#9


引用 6 楼 zyz1985 的回复:
应该会有些区别
比如tomcat应用服务器,它有其自己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的规范去找相应的lib,这就是为什么我们发布的WEB应用要符合那个格式

那eclipse引用library有什么用呢?引用了又不能用?

#10


eclipse引用library 是为了编译代码生成WEB-INF/classes里面的class文件使用,使用eclipse j2ee IDE时,会将WEB-INF/lib中所有的lib自动加入到library中

#11


引用 5 楼 fyswords 的回复:
引用 1 楼 damokelis 的回复:

因为前面是包是跟着项目走的

我还没有发布,就是在自己机器上调试
那就是路径了右点项目propertise->java build path->libraries->add libraries->myeclipse libraries找到你要加的包或propertise->java build path->libraries->add jars/external jars都可以这样不会出现路径不对,我都是这样加的

#12


引用 7 楼 fyswords 的回复:
引用 2 楼 yeqing4562011 的回复:

路径 路径 路径!!!!!!!!自己看jar包的路径

路径肯定没问题啊,不加library的时候编译不过的java类加了library就没有红叉了,但是运行时候找不到jar里的类啊
我觉得加错包了吧-=-=

#13


引用 12 楼 damokelis 的回复:
我觉得加错包了吧-=-=

应该没有吧,把所有引用的jar包拷到lib下面就可以运行了

#14


那你在项目下建个libs文件夹,把你用的所有包全放进去,选中全部右键Build path试下

#15


引用 14 楼 damokelis 的回复:
那你在项目下建个libs文件夹,把你用的所有包全放进去,选中全部右键Build path试下

一样不行

#16


这,,,诡异了,等高手吧

#17


16楼 男的女的?

#18


引用 17 楼 weihui5368452 的回复:
16楼 男的女的?
额!爷们!头像纯粹为了养眼!

#19


该回复于2011-11-25 09:58:47被版主删除

#20


像这样把jar作为library加入工程
把jar包拷到WEB-INF/lib和放到工程之外的路径作为library引用有什么不同?
就会找不到
把jar包拷到WEB-INF/lib和放到工程之外的路径作为library引用有什么不同?
如果把jar放到lib目录下,直接作为library
把jar包拷到WEB-INF/lib和放到工程之外的路径作为library引用有什么不同?
就木有问题

是我的操作有问题吗?

#21


放在lib里面是工程自动引用,是相对项目的相对路径,你从外部引用是本机的绝对路径。可能jar包的路径找不到。你删掉重新引入,或把jar包拷贝到lib目录下。

#22


引用 21 楼 upsuccess 的回复:
放在lib里面是工程自动引用,是相对项目的相对路径,你从外部引用是本机的绝对路径。可能jar包的路径找不到。你删掉重新引入,或把jar包拷贝到lib目录下。

请看20楼第一张图,我在src下面的代码文件没有错误提示,eclipse明显是找到jar包了啊……

#23


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

#24


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

这样就明白了。那这样说来,用eclipse j2ee IDE开发web的时候,如果是编译java代码用到的jar可以作为library引用,如果是框架非java代码部分用到的jar就必须放在lib下面。可以这么理解吗?

#25


是这样
首先,比如你现在用TOMCAT做服务器,那么需要依赖的JAR包就应该考到WEB-INF/lib中,TOMCAT会自动把它编译然后放入WEB-INF/classes目录(当然你src的代码编译以后也会放到这里)。就应该这么做,这是规定(甲鱼的屁股),你用这个server就应该服从其规定,不然就去看看TOMCAT如何实现的,再修改原码吧。
其次,如果将依赖的jar包考到WEB-INF/LIB下,又把这个JAR包的源代码考到SRC下,你觉得会怎么样?先编译谁?谁有效谁无效?你去试试(去看看类路径加载的顺序就知道了)。如果你想修改框架的源代码,你就应该这样做。

#26


没什么不同,只要把包通过配置引用进去就行,就像用myeclipse把myeclipse自带的struts hibernate spring包引进项目一样。。。

#27


引用的话估计离开eclipse就不行了。。。

#28


引用 5 楼 fyswords 的回复:
引用 1 楼 damokelis 的回复:

因为前面是包是跟着项目走的

我还没有发布,就是在自己机器上调试


当然没问题,你全放到library下可以,放到tomat的library下也可以,放到sun的library下也可以

但不具移植性。。。。。。

#29


肯定是路径问题吧,看看.classpath文件

引用楼主 fyswords 的回复:
目前只是在本机调试,为什么放到WEB-INF/lib里面没问题,作为library加入工程就不能用?





--signature------------------------------------
www.qinglobo.com

#30


突然发现自己很久没有手动的导入jar文件 了,, 也从来没有管过这些jar文件去那里下载了
一句命令就能搞定  还真是很爽的

#31


你没看到你的web项目部署到tomcat服务器中只有那么几个文件夹吗,他唯独bin目录放jar包,你不放这里,你的web项目编译就出错了,找不到jar包!

#32


楼主解决啦?

#33


引用 32 楼 dingyun870203 的回复:
楼主解决啦?

明白了,zyz1985解释的很清楚

#34


直接导入就可以了?

#35


对的直接放到lib下吧,我的Build Path引用jar包,启动tomcat就报异常,去项目文件夹下一看lib下是空的。
原来eclipse不帮我们拷包,肯定报错拉。

#36


遇到跟楼主一样的情况~  后面移了下jar包就可以了,害我纠结了好久
原来放到不同Lib下情况不同,以前不知道,又长了见识~~
唉,得加油了~

#1


因为前面是包是跟着项目走的

#2


路径 路径 路径!!!!!!!!自己看jar包的路径

#3


在本地引用外部的jar包没问题。换一个地方发布就会报错了。。

#4


你看看的jar包的路径还是对的吗?

#5


引用 1 楼 damokelis 的回复:
因为前面是包是跟着项目走的

我还没有发布,就是在自己机器上调试

#6


应该会有些区别
比如tomcat应用服务器,它有其自己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的规范去找相应的lib,这就是为什么我们发布的WEB应用要符合那个格式

#7


引用 2 楼 yeqing4562011 的回复:
路径 路径 路径!!!!!!!!自己看jar包的路径

路径肯定没问题啊,不加library的时候编译不过的java类加了library就没有红叉了,但是运行时候找不到jar里的类啊

#8


引用 3 楼 kouyisc 的回复:
在本地引用外部的jar包没问题。换一个地方发布就会报错了。。

我在本地引用也报错

#9


引用 6 楼 zyz1985 的回复:
应该会有些区别
比如tomcat应用服务器,它有其自己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的规范去找相应的lib,这就是为什么我们发布的WEB应用要符合那个格式

那eclipse引用library有什么用呢?引用了又不能用?

#10


eclipse引用library 是为了编译代码生成WEB-INF/classes里面的class文件使用,使用eclipse j2ee IDE时,会将WEB-INF/lib中所有的lib自动加入到library中

#11


引用 5 楼 fyswords 的回复:
引用 1 楼 damokelis 的回复:

因为前面是包是跟着项目走的

我还没有发布,就是在自己机器上调试
那就是路径了右点项目propertise->java build path->libraries->add libraries->myeclipse libraries找到你要加的包或propertise->java build path->libraries->add jars/external jars都可以这样不会出现路径不对,我都是这样加的

#12


引用 7 楼 fyswords 的回复:
引用 2 楼 yeqing4562011 的回复:

路径 路径 路径!!!!!!!!自己看jar包的路径

路径肯定没问题啊,不加library的时候编译不过的java类加了library就没有红叉了,但是运行时候找不到jar里的类啊
我觉得加错包了吧-=-=

#13


引用 12 楼 damokelis 的回复:
我觉得加错包了吧-=-=

应该没有吧,把所有引用的jar包拷到lib下面就可以运行了

#14


那你在项目下建个libs文件夹,把你用的所有包全放进去,选中全部右键Build path试下

#15


引用 14 楼 damokelis 的回复:
那你在项目下建个libs文件夹,把你用的所有包全放进去,选中全部右键Build path试下

一样不行

#16


这,,,诡异了,等高手吧

#17


16楼 男的女的?

#18


引用 17 楼 weihui5368452 的回复:
16楼 男的女的?
额!爷们!头像纯粹为了养眼!

#19


该回复于2011-11-25 09:58:47被版主删除

#20


像这样把jar作为library加入工程
把jar包拷到WEB-INF/lib和放到工程之外的路径作为library引用有什么不同?
就会找不到
把jar包拷到WEB-INF/lib和放到工程之外的路径作为library引用有什么不同?
如果把jar放到lib目录下,直接作为library
把jar包拷到WEB-INF/lib和放到工程之外的路径作为library引用有什么不同?
就木有问题

是我的操作有问题吗?

#21


放在lib里面是工程自动引用,是相对项目的相对路径,你从外部引用是本机的绝对路径。可能jar包的路径找不到。你删掉重新引入,或把jar包拷贝到lib目录下。

#22


引用 21 楼 upsuccess 的回复:
放在lib里面是工程自动引用,是相对项目的相对路径,你从外部引用是本机的绝对路径。可能jar包的路径找不到。你删掉重新引入,或把jar包拷贝到lib目录下。

请看20楼第一张图,我在src下面的代码文件没有错误提示,eclipse明显是找到jar包了啊……

#23


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

#24


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

这样就明白了。那这样说来,用eclipse j2ee IDE开发web的时候,如果是编译java代码用到的jar可以作为library引用,如果是框架非java代码部分用到的jar就必须放在lib下面。可以这么理解吗?

#25


是这样
首先,比如你现在用TOMCAT做服务器,那么需要依赖的JAR包就应该考到WEB-INF/lib中,TOMCAT会自动把它编译然后放入WEB-INF/classes目录(当然你src的代码编译以后也会放到这里)。就应该这么做,这是规定(甲鱼的屁股),你用这个server就应该服从其规定,不然就去看看TOMCAT如何实现的,再修改原码吧。
其次,如果将依赖的jar包考到WEB-INF/LIB下,又把这个JAR包的源代码考到SRC下,你觉得会怎么样?先编译谁?谁有效谁无效?你去试试(去看看类路径加载的顺序就知道了)。如果你想修改框架的源代码,你就应该这样做。

#26


没什么不同,只要把包通过配置引用进去就行,就像用myeclipse把myeclipse自带的struts hibernate spring包引进项目一样。。。

#27


引用的话估计离开eclipse就不行了。。。

#28


引用 5 楼 fyswords 的回复:
引用 1 楼 damokelis 的回复:

因为前面是包是跟着项目走的

我还没有发布,就是在自己机器上调试


当然没问题,你全放到library下可以,放到tomat的library下也可以,放到sun的library下也可以

但不具移植性。。。。。。

#29


肯定是路径问题吧,看看.classpath文件

引用楼主 fyswords 的回复:
目前只是在本机调试,为什么放到WEB-INF/lib里面没问题,作为library加入工程就不能用?





--signature------------------------------------
www.qinglobo.com

#30


突然发现自己很久没有手动的导入jar文件 了,, 也从来没有管过这些jar文件去那里下载了
一句命令就能搞定  还真是很爽的

#31


你没看到你的web项目部署到tomcat服务器中只有那么几个文件夹吗,他唯独bin目录放jar包,你不放这里,你的web项目编译就出错了,找不到jar包!

#32


楼主解决啦?

#33


引用 32 楼 dingyun870203 的回复:
楼主解决啦?

明白了,zyz1985解释的很清楚

#34


直接导入就可以了?

#35


对的直接放到lib下吧,我的Build Path引用jar包,启动tomcat就报异常,去项目文件夹下一看lib下是空的。
原来eclipse不帮我们拷包,肯定报错拉。

#36


遇到跟楼主一样的情况~  后面移了下jar包就可以了,害我纠结了好久
原来放到不同Lib下情况不同,以前不知道,又长了见识~~
唉,得加油了~