【问题标题】:NoClassDefFoundError when using commons-fileupload使用 commons-fileupload 时出现 NoClassDefFoundError
【发布时间】:2014-05-21 15:24:18
【问题描述】:

我使用 commons-fileupload-1.1.1 和 commons-io-1.3.2 在带有 java 6 的 Web 应用程序中上传/下载文件。 在 localhost 中,它可以正常运行,因为我的 lib (server\default\lib) 中有 2 个 jars(我使用 jboss 4)。

当我在服务器中部署应用程序时,尝试上传/下载文件时出现异常:

java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

localhost 和服务器之间的一个区别是:在服务器中,我没有 2 个 jars。

当我更改项目的类路径并添加两个 jar 时,我部署了应用程序 --> 我有同样的异常。

有什么建议吗?

【问题讨论】:

  • 如果类不在你的类路径中,你会得到一个ClassNotFoundException。您收到的 NoClassDefFoundError 通常会产生误导。它可能由于另一个引用类的静态初始化程序中的错误而失败。
  • @jgitter ,我认为您正在反转两者:stackoverflow.com/questions/1457863/…
  • 我不认为我是汤姆。
  • @tom 你的链接问题实际上证实了我所说的,它只是更深入。

标签: java jboss struts-1 apache-commons-fileupload apache-commons-io


【解决方案1】:

有两种方法可以解决这个问题:

  1. 特定于应用程序:在项目的 WEB-INF/lib 文件夹中添加 2 个 jar,构建项目并进行部署。
  2. 或者,试试JBOSS_4_AS\server\all\lib 文件夹。这样,您的 JBOSS 4 应用服务器中部署的所有应用程序都可以看到这 2 个 jar。

我希望这会有所帮助。

【讨论】:

  • :我已经测试了第一个解决方案,但它不起作用(同样的例外),是否正常?第二个解决方案有效,但我想了解为什么第一个解决方案不起作用。
  • 我不知道。我不知道您是否使用完全相同的 jar 来构建您的项目。 NoClassDefFoundError 表示您的代码已编译,但 ClassLoader 在运行时无法找到类文件。有各种因素,除非你告诉我们你用来编译的 jars,你正在编译的 JDK 版本,JBoss AS 运行的 JDK 版本,以及代码或 JBoss 中的任何地方是否有类似的 commons fileupload 和 commons-io jars lib 文件夹,我们无法确定。
  • 我使用 java 6 和 jboss4。
猜你喜欢
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2023-03-08
  • 2016-03-11
  • 2018-09-27
  • 1970-01-01
相关资源
最近更新 更多