eclipse中用tomcat调试时候,ClassNotFoundError?

BryanYang 发布于 2013/04/23 15:41
阅读 2K+
收藏 0

在Eclipse中建立两个java application项目A,B,B引用A的类,编译和运行都不会有问题。(因为跟tomcat无关)

但是,再新建web项目C,C引用A项目,编译时没有错,在C中按F3也能跳到A的相关类。然后开始调试C,tomcat运行时代码走到C调用A的地方,就会报错:ClassNotFound。意思就是tomcat找不到项目A中的类。试着将A打包成A.jar,然后将A.jar放到Tomcat的lib目录下,再在项目C中Run on server,能找到了,也能运行了。

可是为什么tomcat找不到项目A项目中的类呢,在开发环境中,肯定要不断修改项目A,B,C。不能将每次代码改变后都打包到tomcat的lib下。不知道大家有没有遇到这样的问题。 怎么解决呢? tomcat版本:7.0.3;java版本6,

Ecplise:javaee...

初用java,希望大家能 帮下。谢谢啦

加载中
0
逝水fox
逝水fox

关键是你所谓的引用是怎么做的,如果只是在Build Path的Project里面引用工程,他只在编译当前工程代码的时候引用其他工程协助,并不会把引用工程的的class复制过来。解决方法有3种。

方法1 在Servers面板双击对应的服务器后,修改Open Launch configuration中的Classpath,添加引用的工程。这个办法类似你上面提到的吧jar复制到Tomcat的lib下,不过放那里和放在工程的lib下多少是有区别的。

方法2 在BuildPath的source面板,添加一个link源文件目录,这样目标工程的class都会一起编译,当然坏处是A需要包含编译所有代码需要的jar包,哪怕你自己用不到。

方法3 目标工程通过ant自己打包到A的WEB-INF/lib下

BryanYang
BryanYang
哥们,我试了你的方法2.真好使。终于通过了。而且不用打包就实现了。 谢谢了。两天了,终于解决了,哥们,你在哪儿,我请你吃饭去。
BryanYang
BryanYang
我确实是单纯的在C项目的 properties-->java bulid path -->Projects 中Add 项目A。
BryanYang
BryanYang
听起来好像是那么回事,我先试试看,谢谢啦。
0
JustForFly
JustForFly

我一般的做法是把A.jar放到web项目C的WEB-INF/lib 目录下面,然后加到项目C的build path里面。

关于调试的时候,想要关联上A.jar的源工程,我一般都是在引入的A.jar的上面添加源代码的引用。

JustForFly
JustForFly
回复 @BryanYang : 在很早之前用过eclipse里面的project facets和project reference的功能,可以将几个工程关联起来,但是能不能自动部署到tomcat上面就不太清楚了。
BryanYang
BryanYang
嗯,你说的那个我明白,如果仅仅是调试时候看一下源代码,你说的就可以解决了。但是如果还需要编辑源代码。那样的话,不还得每次更新A.jar么。
0
刘超71
刘超71
写个脚本每次修改a工程的代码都自动打包部署到c工程的WEB-INF\lib下
返回顶部
顶部