A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我叫MT 中级黑马   /  2013-12-31 12:23  /  960 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在学基础,我本想试试看toString()能打印出些什么内容结果运行出错我在网上查了查,说是运行名字打错我看了看我写的没错啊
Exception in thread "main" java.lang.NoClassDefFoundError: lon (wrong name: Lon)是什么意思?网上说的太难懂了

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 下次代码要写代码框里哦

查看全部评分

10 个回复

倒序浏览
我电脑 不好用 经常蓝屏  在安全模式下也看不到你的图片  先说下 这情况 我也遇到过 如果你确定你写的没错  你就去看看你的jdk,javac   运行的是你的类的名称   那么 java  运行的是你的main方法的名称   你试试  希望能帮到你   
回复 使用道具 举报
还有一个我发现我文件夹生成了Lon.class但没有生成lon.class这个类文件,为啥没生成呢?
回复 使用道具 举报
本帖最后由 胡永城 于 2013-12-31 12:55 编辑

截图看不太清楚。建议下次把源码贴上。

说一些可能出现的情况:

“我文件夹生成了Lon.class但没有生成lon.class这个类文件”

出现Lon.class。是因为java文件中类名为Lon,就是class Lon。
因为 class 前面没有 public 关键字,所以文件名可以和类名不一样。

java lon 出现  NoClassDefFoundError错误:

因为没有找到 lon.class 。

运行  java Lon 试一下,成功的话就说明: 你的文件名和类名不一样。

不成功的话,可能是classpath配置错误。

点评

FFF
不是字大就有分的~哈哈哈~  发表于 2013-12-31 16:47
回复 使用道具 举报 1 0
楼主你那么小的照片让谁看啊!
回复 使用道具 举报
胡永城 发表于 2013-12-31 12:53
截图看不太清楚。建议下次把源码贴上。

说一些可能出现的情况:

class lon
{
        void kili()
        {
                        for (int x=0;x<30;x++)
                {
                System.out.println(toString()+"Hello World!");
                }
        }
}

class Lon
{
        public static void main(String[] args)
        {
                lon l = new lon();
                l.kili();
        }
       
}
回复 使用道具 举报
你的第一个类”lon“首字母没有大写,但是大写的话又跟第二个类名称相同了,建议你换个名称,并把首字母大写就OK了。个人拙见,仅供参考。
回复 使用道具 举报
本帖最后由 胡永城 于 2013-12-31 13:53 编辑
我叫MT 发表于 2013-12-31 13:08
class lon
{
        void kili()

好吧,找到原因了,在java中,是严格区分大小写的,所以Lon和lon是两个类。
但是,windows系统是不区分大小写的。
Lon.class和lon.class不能共存。
当编译的时候,首先编译生成 Lon.class文件,之后编译出现 lon.class。windows系统认为这两个文件是一样的,出现大小写的区别的时候,会出现覆盖,所以Lon.class你反编译一下源码是lon.java的。这个类没有main方法,运行时会报错,
出现NoClassDefFoundError错误的原因是当前目录下没有相对应的class文件。

我测试的时候出现的是lon.class文件,小写的,
后来测试出现的都是大写文件名。原因可能是覆盖的时候文件名没有更改,
windows文件不区分大小写。



QQ截图20131231135136.png (39.04 KB, 下载次数: 8)

QQ截图20131231135136.png

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 好吧,字大也可能有分的~~

查看全部评分

回复 使用道具 举报
胡永城 发表于 2013-12-31 13:46
好吧,找到原因了,在java中,是严格区分大小写的,所以Lon和lon是两个类。
但是,windows系统是不区分大 ...

谢谢,明白了
回复 使用道具 举报
胡永城 发表于 2013-12-31 13:46
好吧,找到原因了,在java中,是严格区分大小写的,所以Lon和lon是两个类。
但是,windows系统是不区分大 ...

成功了!!谢谢你
H:\testjava>java Lon
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!
on@de6cedHello World!

H:\testjava>
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马