是这样,我程序中调用了几个自己的jar包,我把要用的jar包放到了%JAVA_HOME%\jre\lib\ext下,编译通过了,但是运行时却报Exception in thread "main" java.lang.NoClassDefFoundError: ObtainOneMOMESSAGE (w
rong name: com/airinbox/sms/mt/client/sample/ObtainOneMOMESSAGE)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)错误,自己的jar包太多了,加到CLASSPATH太多了,个位兄台,有没有什么好的办法解决?高分求助!

解决方案 »

  1.   

    Exception in thread "main" java.lang.NoClassDefFoundError: ObtainOneMOMESSAGE (w
    从这里看,应该是路径方面的问题了,提示是没定义类,就是路径错了,找不到类,引发的错误了
      

  2.   

    我的classpath是“.\;E:\java1.6\lib\tools.jar;E:\java1.6\jre\lib\ext;”已经指明了有当前路径下的CLASS呀为什么还是找不到这个类呢?
      

  3.   

    是不是要放到E:\java1.6\jdk\jre\lib\ext下,而不是E:\java1.6\jre\lib\ext中?
      

  4.   

    编译通过,说明path设置正确,可以找到javac
    运行抛出异常,说明classPath的设置错误或者不全。
    首先得看LZ的程序中用到哪些类(.class),这些类都放在哪里,把这个路径添加进去,不同的路径用;分开
      

  5.   

    classpath中直接指定到使用的jar包试试看?
      

  6.   

    在运行 java 命令时,在有 -jar 参数的情况下,会忽略 -classpath 参数,
    也就是说你把 classpath 设好,也是没有用的。放到 %java_home%/jre/lib/ext 下是一个解决方法,但不是最好的,因为只
    有这一个程序能用到这些包,其他的程序用不到。最好的方法是只给当前的程序使用,这样需要更改 MANIFEST.MF 文件,使用
    WinRAR 把打开 jar 文件,在 META-INF 下,把 MANIFEST.MF 文件拿出来,
    在这个文件的后面加上:Class-Path: lib/xxx1.jar lib/xxx2.jar -- 把 jar 一个一个地手工写
    上去中间用空格分开最后保证 MANIFEST.MF 后面有两个空行。将该 MANIFEST.MF 打包进 jar 中,生成 jar,在 jar 所在的目录下,新建
    一个 lib 目录,把所有的 jar 拷进去,退至上层就大功告成了。如果你使用 Ant 工具的话,就不用那么麻烦了,在类文件更改后,重建时还要
    简单。
      

  7.   

    配置classpath要指定包名
    <盘符>:\<路径>\<packagename.jar>
    如:
    E:\somepath\somepackage.jar
    只有一个路径是没有用的
      

  8.   

    你在%JAVA_HOME%\jre\lib\ext下放的jar包中的某个类肯定调用了系统类或扩展类看看《java核心技术》第九章
      

  9.   

    谢谢大家的帮忙,问题已经解决,特别是要感谢bao110908和sunnykun,我是手工在CLASSPATH上添加了自己的jar包路径解决的。谢谢。