小弟请教一个Javac中编译成功,但是java运行程序时报找不到类定义的错误问题?

xiaolu1999 2007-10-19 03:15:51
是这样,我程序中调用了几个自己的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太多了,个位兄台,有没有什么好的办法解决?高分求助!
...全文
938 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolu1999 2007-10-23
  • 打赏
  • 举报
回复
谢谢大家的帮忙,问题已经解决,特别是要感谢bao110908和sunnykun,我是手工在CLASSPATH上添加了自己的jar包路径解决的。谢谢。
yilinhust 2007-10-19
  • 打赏
  • 举报
回复
你在%JAVA_HOME%\jre\lib\ext下放的jar包中的某个类肯定调用了系统类或扩展类

看看《java核心技术》第九章
  • 打赏
  • 举报
回复
哇~哈哈~~,楼上的,这是你自己的昵称,还是系统把你改的?
Trainsp0tting 2007-10-19
  • 打赏
  • 举报
回复
配置classpath要指定包名
<盘符>:\<路径>\<packagename.jar>
如:
E:\somepath\somepackage.jar
只有一个路径是没有用的
  • 打赏
  • 举报
回复
在运行 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 工具的话,就不用那么麻烦了,在类文件更改后,重建时还要
简单。
sunnykun 2007-10-19
  • 打赏
  • 举报
回复
classpath中直接指定到使用的jar包试试看?
johnsoncr 2007-10-19
  • 打赏
  • 举报
回复
编译通过,说明path设置正确,可以找到javac
运行抛出异常,说明classPath的设置错误或者不全。
首先得看LZ的程序中用到哪些类(.class),这些类都放在哪里,把这个路径添加进去,不同的路径用;分开
wesnow 2007-10-19
  • 打赏
  • 举报
回复
是不是要放到E:\java1.6\jdk\jre\lib\ext下,而不是E:\java1.6\jre\lib\ext中?
xiaolu1999 2007-10-19
  • 打赏
  • 举报
回复
我的classpath是“.\;E:\java1.6\lib\tools.jar;E:\java1.6\jre\lib\ext;”已经指明了有当前路径下的CLASS呀为什么还是找不到这个类呢?
光辉岁月 2007-10-19
  • 打赏
  • 举报
回复
Exception in thread "main" java.lang.NoClassDefFoundError: ObtainOneMOMESSAGE (w
从这里看,应该是路径方面的问题了,提示是没定义类,就是路径错了,找不到类,引发的错误了
「已注销」 2007-10-19
  • 打赏
  • 举报
回复
你的classpath包含当前路径么?

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧