public class TV {
public int volume=1;

public void setVolume(int volume){
this.volume=volume;
}
} class tv extends TV{
public static void main(String args[]){
tv KONKA=new tv();

System.out.println(KONKA.volume);
KONKA.setVolume(9);
System.out.println(KONKA.volume);
}
}以上代码在eclipse里面没有报错,但是执行的时候提示错误:
java.lang.NoClassDefFoundError: TV (wrong name: tv)
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)
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)
Exception in thread "main" 
麻烦大家看下错在哪里?

解决方案 »

  1.   

    这个问题是public 应该为public class tv
      

  2.   

    把tv拿到外面,定义成public的
      

  3.   

    编译出来只有一个TV.class  TV类里没有main方法  
      

  4.   

    不要弄2个一样的类名,虽然你有大小写区别,另外,main是放在public方法里的
    tv.javaclass TVF {
        public int volume=1;
        
        public void setVolume(int volume){
            this.volume=volume;
        }
    }public class tv extends TVF{
        public static void main(String args[]){
            tv KONKA=new tv();
            
            System.out.println(KONKA.volume);
            KONKA.setVolume(9);
            System.out.println(KONKA.volume);
            }
    }
      

  5.   

    能不能具体一点?还有,想问一下,setVolume和setvolume有什么区别没有?
      

  6.   


    当然有了,Java是严格区分大小写的。String a,A;是两个变量
      

  7.   

    咦,4楼是正确的。
    奇怪了,只要换个类名就行了。例如只要把父类类名有TV改成TV3就行了。
    Java明明是区分大小写的啊 ?!public class tv extends TV3{
        public static void main(String args[]){
            tv KONKA=new tv();
            
            System.out.println(KONKA.volume);
            KONKA.setVolume(9);
            System.out.println(KONKA.volume);
            }
    }class TV3 {
        public int volume=1;
        
        public void setVolume(int volume){
            this.volume=volume;
        }
    }
      

  8.   

    谢谢大家。换类名是可以的,但是程序好像要求必须以public类作为java的程序名,否则main函数会报错?我已经成功运行了!感谢大家的关注
      

  9.   


    你新建的是tv啊,这有什么奇怪的楼主新建的是tv,而他的类叫TV,那当然是不行的
      

  10.   

    楼主快去看看命名规范,不然下回发问的时候,大家都在说:"是tv不是TV,这里应该TV,那里才是tv........"到时你自己都给搞混了.