错误ClassNotFoundException访问web项目中的jar

时间:2010-11-11 19:13:28

标签: java eclipse classpath buildpath

摘要

第三方 jar 文件中的类在运行独立JUnit测试时添加到构建路径时是可访问的,但是当从内部通过普通的旧Java对象访问时,“ ClassNotFoundException ”一个动态的网络项目。

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

详细

我的项目需要很多第三方罐子,即sqlite,eclipse jdt& jsoup。我创建了这个项目作为一个独立的项目,所有来自罐子的类都可以访问。

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

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

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

但是当我尝试“Run on Server ..”时,我继续为所有第三方类获取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)

我确信,由于我对如何在网络上部署应用程序缺乏了解,我必须做些什么。

3 个答案:

答案 0 :(得分:0)

runtime classpath可以与构建类路径不同。创建显式启动配置。默认值将从构建类路径开始,但您可能需要手动调整它以包含这些第三方jar。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我明白了。我只需将所有jar放在WEB-INF / lib目录中。当我要求它使用上面提到的罐子时,我认为Eclipse会为我做所有必需的设置。但我想有些东西不能很好地自动化。