RTpublic class JRAnswer {
    public static void main(String[] args){
search();
    }
    protected void search(){
    }
}

解决方案 »

  1.   

    没实例化,改成public class JRAnswer {
        public static void main(String[] args){
            (new JRAnswer()).search();
        }
        protected void search(){    
        }
    }或改成public class JRAnswer {
        public static void main(String[] args){
            JRAnswer.search();
        }
        protected static void search(){    
        }
    }
      

  2.   

    search();
    这里错了
    先说一下解决方法:你可以创建JRAnswer的实例去调用这个方法如:new JRAnswer().search();再说一下为什么不可以在静态方法中调用非静态方法:\
    在java里面,静态方法、静态变量都是在类加载的时候就会被初始化的,并且需要在类加载的时候进行必要的检查。
    当在静态方法里面遇到非静态的实例变量或者方法时,由于类加载时候这些方法和变量并未存在,这样就找不到它们了,
    这样就可以导致程序出错。为了避免这种错误,编译器就会先检测是否有这样的调用。这样说不知道你清楚了没?
      

  3.   

    这里的错误原因:不能对类型JRAnswer中的非静态方法search()进行静态引用!
    可改为如下代码:
    public class JRAnswer {
        public static void main(String[] args){
        search();
        }
        protected static void search(){    
        }
    }
    或者
    public class JRAnswer {
        public static void main(String[] args){
        new JRAnswer().search();
        }
        protected void search(){    
        }
    }
    这两种都是正确的。
      

  4.   

    程序试调的时候老喜欢在类里加个main函数.可以每回都要把试调函数改成static,烦死了.
    我当然知道静态方法不能调用非静态方法..可我一直认为main是个例外.可一直还是没找到依据,
    看来我真的是错了.
    谢谢上面各位.结帖.