我在 IBM 虚拟机中使用了 Ubuntu 18.04.4,在 Ubuntu 终端中运行 jar 文件时出现错误。我已经安装了 Java。
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/ProgramDriver
at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:37)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.ProgramDriver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
答案1
所以问题在于缺少库。当 Java 程序启动时,它会加载 JVM(Java 虚拟机),然后它还会开始加载所需的库。
您有错误:java.lang.NoClassDefFoundError
这意味着缺少类,并且类是:org.apache.hadoop.util.ProgramDriver
。因此,从这个错误中您可以看到缺少的类在里面Apache Hadoop
。这是该项目的主页:https://hadoop.apache.org/
你应该做什么?如果你是要使用的程序的作者,那么请以某种方式将此依赖项添加到你的程序中。你可以将其添加到 jar 内部或外部,使用相对路径或绝对路径。
如果您无法更改代码,请检查您正在使用的项目的文档。看看是否有关于包含其他库的内容,您还可以检查Apache Hadoop
如何使用和安装。
如果所有这些都没有帮助,您还可以检查如何在 JVM 中添加其他库,但是每次启动此 JVM 时,无论您里面有哪个项目,这Apache Hadoop
都可能不是最佳解决方案。
祝大家好运!