【问题标题】:Intellij + Apache Math 3.3 giving NoClassDefFound errorIntellij + Apache Math 3.3 提供 NoClassDefFounderror
【发布时间】:2014-07-17 19:02:38
【问题描述】:

我将 apache Math 3.3 jar 库复制到我的 intellij 项目文件夹中,然后通过“添加到库”选项将其添加到我的项目中。

虽然一切都可以正常编译和构建,但当我运行项目的 jar 时,我从 apache 数学库导入的类出现 NoClassDefFoundError。

有什么解决办法吗?

谢谢

编辑

以下是我得到的错误

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/math3/stat/descriptive/rank/Percentile
    at Main.main(Main.java:80)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.stat.descriptive.rank.Percentile
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 1 more

模块对话框的屏幕截图在这里:http://imgur.com/xQ102rT

编辑 2:我使用“添加到库”安装了 apache jar,然后选择了“类”选项。

编辑 3:要制作 jar,我转到 Build -> Build Artifacts -> Build。

【问题讨论】:

  • 当您执行项目 jar 时,您的类路径中是否有 Apache 库 jar?它是否打包在您的项目 jar 中,您可以通过浏览其内容来验证它吗?
  • 在命令本身中没有明确显示,但 intellij 不应该自动捆绑它吗?我已经找到了,但我不需要把它放在我的类路径中。
  • 请告诉我们您看到的实际错误
  • Maven == 问题解决了
  • 我从未使用过 IntelliJ 的包功能,我只使用过 Maven,所以我无法确定依赖库是否与您的 jar 一起打包。但是,如果您收到 no class found 错误,那是因为类加载器找不到它。它不在您的类路径中,或者不在 jar 中。

标签: java intellij-idea apache-commons apache-commons-math


【解决方案1】:

问题出在这句话上:

当我运行我的项目的 jar 时

如果你使用 java 的标准 jar 机制,它不会 jar 依赖。所以你仍然需要在类路径中添加依赖。 IntelliJ 的功能主要用于使用 IntelliJ 的运行选项运行。如果您改为通过命令行运行 jar,则需要将依赖项添加到类路径中。

如果您使用 intelliJ 进行 jaring,则该 jar 被视为工件。您需要将该库添加到您的构建工件中。转到构建 > 构建工件。将鼠标悬停在 jar 上并选择“编辑”。

您应该会在“可用元素”部分看到该库。只需双击它,它就会被添加到您的 jar 中。然后点击确定。

【讨论】:

  • 我明白了。为什么 trove 不是问题,而 apache-commons-math 是问题?
  • @Opt 也许代码首先会触及 apache commons。您是否尝试过在没有数学依赖的情况下使用 trove 运行它?
  • 是的,我一开始就是这样做的(后来添加了 apache)。效果很好。
  • @Opt 你可以在你的问题中添加你用来做 jaring 的命令吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 2021-02-16
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 2016-10-29
相关资源
最近更新 更多