我有两个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)我如何解决这个问题,以便依赖性处理它们?
答案 0 :(得分:2)
Java Build Path
在编译时控制类路径,但您还需要使用Deployment Assembly
的{{1}}属性页来配置部署。毕竟,您可能已经添加了一个API jar来编译您最终部署时作为服务器运行时的一部分可用的项目,或者在您的情况下,使用另一个必须打包为jar的项目在您的Web应用程序的WEB-INF / lib文件夹中,以便在运行时使用。