【发布时间】:2014-07-21 09:26:21
【问题描述】:
当我尝试使用以下命令运行 jar 时,我收到了 ClassNotFoundException:
java -jar MyJar.jar
我用 eclip 创建了这个 jar。 MyJar 依赖于其他几个罐子。我在 ecplise 中看到所有这些其他 jar 都在 classpath 中。
我还使用导出类路径将这些 jar 添加到 Unix 中的类路径中。但我仍然得到 ClassNotFoundException。
异常堆栈跟踪:
Exception in thread "main" java.lang.NoClassDefFoundError: org.apache.hadoop.conf.Configuration
at com.a.HDFSCopy.readURI(HDFSCopy.java:16)
at com.a.CopyMain.main(CopyMain.java:9)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
at java.net.URLClassLoader.findClass(URLClassLoader.java:434)
at java.lang.ClassLoader.loadClass(ClassLoader.java:660)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
... 2 more
之前的类路径:
/opt/ibm/biginsights/IHC/lib/biginsights-gpfs-1.1.1.jar:/opt/ibm/biginsights/IHC/hadoop-core.jar:
Class Path After(包括依赖项所需的 jar 的位置):
[biadmin@big-instght-15 ~]$ echo $CLASSPATH /opt/ibm/biginsights/IHC/lib/biginsights-gpfs-1.1.1.jar:/opt/ibm/biginsights/IHC/hadoop-core.jar::/home/biadmin/hadoop_jars/commons-logging-1.1。 1.jar:/home/biadmin/hadoop_jars/commons-configuration-1.8.jar:/home/biadmin/hadoop_jars/commons-lang-2.4.jar
但是,我意识到如果我打开一个新终端并回显 $CLASSPATH,它只会显示之前的类路径。它没有反映我对类路径所做的更改。即它不显示之后的类路径。
如何解决这个问题?
谢谢,
马哈拉克什米
【问题讨论】:
-
在此处显示完整的堆栈跟踪。我们应该知道它抛出异常的类名。如果是声明 main 方法的类,那么您应该检查类修饰符是否是公共的?
-
哪个类没有找到?
-
您需要将您的应用程序依赖树与主条目一起发布。
-
您是否从导出类路径的同一个终端/shell 运行 java 命令?换句话说 - 你能确保你导出的类路径对 java 命令是可见的。另外 - java 没有找到哪个类?它是主类还是依赖项之一?
-
@Sumit:我已经粘贴了完整的堆栈跟踪
标签: java linux eclipse unix jar