为什么运行时不能找到类?

时间:2014-08-04 18:08:43

标签: java eclipse tomcat java-ee servlets

我有两个eclipse项目,项目A和B.项目A是在eclipse中运行在Tomcat上的JavaEE Web应用程序。项目B有一些独立的应用程序代码。我已将Project B作为项目依赖项添加到Project A的Build Path和Tomcat的classpath(作为用户条目)。

项目A和B都有apache commons-lang-2.6.jar的单独副本,其中包含StringUtils类。当我运行Tomcat服务器时,一切都很好。发生请求时,它由项目A中的Servlet处理(其中导入并使用StringUtils)。然后它调用Project B中的代码,它也使用StringUtils。但是,Project B中的代码会出现以下错误:

SEVERE: Servlet.service() for servlet [***Servlet] in context with path [/***] threw exception 
[Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils

显然已加载StringUtils类供Servlet使用 1)为什么运行时环境无法找到/使​​用已加载的StringUtils来执行Project B代码? 2)我如何解决这个问题,以便依赖性处理它们?

1 个答案:

答案 0 :(得分:2)

Java Build Path在编译时控制类路径,但您还需要使用Deployment Assembly的{​​{1}}属性页来配置部署。毕竟,您可能已经添加了一个API jar来编译您最终部署时作为服务器运行时的一部分可用的项目,或者在您的情况下,使用另一个必须打包为jar的项目在您的Web应用程序的WEB-INF / lib文件夹中,以便在运行时使用。

Deployment Assembly New and Noteworthy mention

相关问题