【问题标题】:ClassNotFoundException while running jar运行 jar 时出现 ClassNotFoundException
【发布时间】: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


【解决方案1】:

MANIFEST.MF 中列出的主要类是什么?如果你解压jar,它在jarfile中的正确位置吗?

【讨论】:

  • MANIFEST.MF中列出的主类是com.a.CopyMain 这是正确的mmain类
  • MANIFEST.MF 正确列出了主类。但是,它没有关于依赖类的信息
猜你喜欢
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 2016-07-26
  • 2018-07-15
  • 1970-01-01
相关资源
最近更新 更多