日期:2014-05-19  浏览次数:20716 次

把jar包拷到WEB-INF/lib和放到工程之外的路径作为library引用有什么不同?
目前只是在本机调试,为什么放到WEB-INF/lib里面没问题,作为library加入工程就不能用?

------解决方案--------------------
因为前面是包是跟着项目走的
------解决方案--------------------
路径 路径 路径!!!!!!!!自己看jar包的路径
------解决方案--------------------
在本地引用外部的jar包没问题。换一个地方发布就会报错了。。
------解决方案--------------------
你看看的jar包的路径还是对的吗?
------解决方案--------------------
应该会有些区别
比如tomcat应用服务器,它有其自己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的规范去找相应的lib,这就是为什么我们发布的WEB应用要符合那个格式
------解决方案--------------------
eclipse引用library 是为了编译代码生成WEB-INF/classes里面的class文件使用,使用eclipse j2ee IDE时,会将WEB-INF/lib中所有的lib自动加入到library中
------解决方案--------------------
探讨

引用:

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

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

------解决方案--------------------
放在lib里面是工程自动引用,是相对项目的相对路径,你从外部引用是本机的绝对路径。可能jar包的路径找不到。你删掉重新引入,或把jar包拷贝到lib目录下。
------解决方案--------------------
楼主你看我的回复了么?
eclipse工程下的library是用来编译里面的src中java文件的
实际发布到tomcat时,仅仅只复制了WEB-INF/lib里面的jar包,所以出现eclipse可以正常编译但tomcat运行是找不到类,
如果你是用的eclipse j2ee IDE,你去WorkSpace\.metadata\.plugins\**.server.core\wtpwebapps找到运行时发布的工程就可以明白了
------解决方案--------------------
是这样
首先,比如你现在用TOMCAT做服务器,那么需要依赖的JAR包就应该考到WEB-INF/lib中,TOMCAT会自动把它编译然后放入WEB-INF/classes目录(当然你src的代码编译以后也会放到这里)。就应该这么做,这是规定(甲鱼的屁股),你用这个server就应该服从其规定,不然就去看看TOMCAT如何实现的,再修改原码吧。
其次,如果将依赖的jar包考到WEB-INF/LIB下,又把这个JAR包的源代码考到SRC下,你觉得会怎么样?先编译谁?谁有效谁无效?你去试试(去看看类路径加载的顺序就知道了)。如果你想修改框架的源代码,你就应该这样做。

------解决方案--------------------
没什么不同,只要把包通过配置引用进去就行,就像用myeclipse把myeclipse自带的struts hibernate spring包引进项目一样。。。
------解决方案--------------------
引用的话估计离开eclipse就不行了。。。
------解决方案--------------------
探讨

引用:

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

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

------解决方案--------------------
肯定是路径问题吧,看看.classpath文件

探讨
目前只是在本机调试,为什么放到WEB-INF/lib里面没问题,作为library加入工程就不能用?

------解决方案--------------------
突然发现自己很久没有手动的导入jar文件 了,, 也从来没有管过这些jar文件去那里下载了
一句命令就能搞定 还真是很爽的
------解决方案--------------------
你没看到你的web项目部署到tomcat服务器中只有那么几个文件夹吗,他唯独bin目录放jar包,你不放这里,你的web项目编译就出错了,找不到jar包!