Java 运行jar时发生ClassNotFoundException

Java 运行jar时发生ClassNotFoundException,java,linux,eclipse,unix,jar,Java,Linux,Eclipse,Unix,Jar,当我尝试运行包含以下命令的jar时,我得到了ClassNotFoundException: java -jar MyJar.jar 我用eclipe创建了这个罐子MyJar取决于其他几个罐子。我在ecplise中看到所有其他jar都在类路径中 我还使用导出类路径将这些JAR添加到Unix中的类路径中。但我还是得到了ClassNotFoundException 异常堆栈跟踪: Exception in thread "main" java.lang.NoClassDefFoundError: o

当我尝试运行包含以下命令的jar时,我得到了
ClassNotFoundException

java -jar MyJar.jar
我用eclipe创建了这个罐子MyJar取决于其他几个罐子。我在ecplise中看到所有其他jar都在类路径中

我还使用导出类路径将这些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
之前的类路径:

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/bigdights/IHC/lib/bigdights-gpfs-1.1.1.jar:/opt/ibm/bigdights/IHC/hadoop-core.jar:

之后的类路径(包括依赖项所需的jar的位置):

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
[biadmin@big-INSGHT-15~]$echo$CLASSPATH /opt/ibm/biginsights/IHC/lib/biginsights-gpfs-1.1.jar:/opt/ibm/biginsights/IHC/hadoop core.jar::/home/biadmin/hadoop_jars/commons-logging-1.1.jar:/home/biadmin/hadoop_jars/commons-configuration-1.8.jar:/home/biadmin/hadoop_jars/commons-lang-2.4.jar

但是,我意识到,如果我打开一个新终端并echo$CLASSPATH,它只显示以前的类路径。它没有反映我对类路径所做的更改。i、 e.之后不显示类路径

如何解决这个问题

谢谢


Mahalakshmi

MANIFEST.MF
中列出的主要类是什么?如果取消jar,它是否在jar文件中的正确位置?

在此处显示完整的堆栈跟踪。我们应该知道它引发异常的类名。如果它是声明main方法的类,那么您应该检查类修饰符它是公共的吗?找不到哪个类?您需要发布应用程序依赖关系树以及主条目。您是否从导出类路径的同一终端/外壳运行java命令?换句话说,您能否确保您导出的类路径对java命令可见。还有-java找不到哪个类?它是主类还是依赖项之一?@Sumit:我已经粘贴了完整的堆栈跟踪MANIFEST.MF中列出的主类是com.a.CopyMain这是正确的mmain classMANIFEST.MF正确列出了主类。但是,它没有关于依赖类的信息