黑马程序员技术交流社区

标题: 为什么不能运行啊 [打印本页]

作者: 程有愿    时间: 2012-7-2 21:28
标题: 为什么不能运行啊
public class MainBoard {
public void run()
{    System.out.println("MainBoard  run");
        }
public void useNetcard(NetCard c)
{     c.open();
       c.close();
        }
}
class NetCard
{   public void open()
{    System.out.println("netcard open");
        }
public void close()
{    System.out.println("netcard close");
        }
        }
class DuoTaiDemon11
{   
        public static void main(String[] args )
{   
                  MainBoard  m=new MainBoard();
           m.run();
           m.useNetcard(new NetCard());
         
        }
        }
作者: 葛奎    时间: 2012-7-2 21:32
可以运行啊  你把public class MainBoard中的public去掉就行了
作者: 黑马-王言龙    时间: 2012-7-2 21:41
希望你下次给出错误提示
别人也好回答
作者: 周朋飞    时间: 2012-7-2 23:41
其实这就是一个.java源文件当中可以有多个类的问题,一个.java源文件当中可以有多个类,但是只有一个类是public类型的而且这个类的名字跟源文件的名字必须是一致的,所以你的主函数设成public的没错 但是第一个类设成pubic的就会出错
作者: 赵庆礼    时间: 2012-7-2 23:51
public class MainBoard中的public去掉就可以运行了,

作者: 孙飞    时间: 2012-7-3 00:22
首先,如果你要编译没问题的话要把你的java文件名字保存为MainBoard,这样编译不会出错,因为文件名要和公共类的类名一样才行,但运行时会异常,因为程序要有一个main方法做为入口才能运行,虚拟机会在主类的class文件中找入口,而你的主类中没有main函数做入口,所以运行不起来。所以你要把你main函数所在的类做为主类才行,可以在主类前加public或者都不加,虚拟机会自动寻找程序入口。不知道说的对不,请指正
作者: 程有愿    时间: 2012-7-3 09:04
其实吧  我想出来了,只是我想运行的类和文件名称不一致,我文件命名为MainBoard.class而这个类里没有主函数入口,而我自己想运行的是Class  DuoTaiDemon11,所以才出现上面的情况
作者: 黄大兴    时间: 2012-7-3 10:17
public class MainBoard   类是不需要定义成public 的
作者: 刘建龙    时间: 2012-7-3 15:40
初步估计楼主没有将主方法所在的类名定义成与.java一致的名字,另外public类,在jvm执行时是首先执行的。一般的要把main方法定义在public类总,并且java中必须将public的类名与java文件名定义成一致的,否则就会编译不通过,或不能执行!
如:public class People
{
      public static void main(String[] args)
     {}
}
其java的文件名必须为:People.java




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2