0

概括

在运行独立的 JUnit 测试时添加到构建路径时可以访问来自 3rd 方jar文件的类,但在通过动态 Web 项目中的普通旧 java 对象访问时会出现“ ClassNotFoundException ”。

  • 使用的IDE:Eclipse
  • 网络服务器:Apache 7

细节

我的项目需要很多 3rd 方 jar,即 sqlite、eclipse jdt 和 jsoup。我已经将此项目创建为一个独立项目,并且 jar 中的所有类都可以正常访问。

但现在我已将整个“src”文件夹复制到“动态网络项目”中。我创建了一个文件夹“jars”,其中包含所有这些 3rd 方 jar,并确保按照以下步骤将所有这些都添加到构建路径中:

项目属性 --> Java 构建路径 --> 库 --> 添加 jars --> 从 jars 文件夹中选择所有 jar 文件。

当我在 Web 项目中运行独立的 JUnit 测试时,可以很好地访问这些 jar。请注意,此 junit 测试无论如何都不需要服务器。

但是,当我尝试“在服务器上运行..”时,对于所有 3rd 方类,我都会继续获得像这样的 ClassNotFoundException :

java.lang.ClassNotFoundException: org.sqlite.JDBC
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517)

我确信这与我对如何在 Web 上部署应用程序缺乏了解有关。

4

3 回答 3

0

运行时类路径可以不同于构建类路径。创建显式启动配置。默认将从构建类路径开始,但您可能必须手动调整它以包含那些 3rd 方 jar。

于 2010-11-11T19:21:01.547 回答
0

我之前在 Eclipse 和 Web Server Tools 项目中遇到过这个问题。检查您的 .settings 文件和其他文件以配置您在项目中使用的插件。您可能必须删除 Eclipse 视图中的一些过滤器。WST 以不同的方式构建其构建路径,因此它可能没有使用您在项目中包含的 jar。

于 2010-11-12T22:03:39.973 回答
0

我想到了。我只需要将所有 jar 文件放在 WEB-INF/lib 目录中。当我要求 Eclipse 使用提到的 jar 时,我认为 Eclipse 会为我完成所有必需的设置。但我想有些东西不是很好自动化的。

于 2010-11-13T22:40:25.690 回答