我正在尝试使用 JAR 文件在 AWS Elastic Map Reduce 上运行 hadoop 作业。我正在使用一个名为 EJML https://code.google.com/p/efficient-java-matrix-library/wiki/EjmlManual的库。我使用 project-->Build Path-->Configure Build Path-->Add Extrenal Jars in Eclipse 将它作为外部库包含在我的项目中。当我在本地计算机上运行该项目时,一切都很好。但是在 AWS 上我得到了错误,
Exception in thread "main" java.lang.NoClassDefFoundError: org/ejml/simple/SimpleBase
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.hadoop.util.RunJar.main(RunJar.java:180)
Caused by: java.lang.ClassNotFoundException: org.ejml.simple.SimpleBase
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 3 more
我想知道可能出了什么问题。我不得不重建库以针对 Java 6 而不是 7,因为 AWS 上的 hadoop 仅在 Java 6 上运行。任何帮助/建议将不胜感激。谢谢
编辑:在 eclipse 中解决问题的一种简单方法是在将项目导出到 JAR 时选择导出 Runnable JAR 文件选项。