解决方案 »

  1.   

    你确定不是因为你把类名弄成了String的缘故么。
    这个貌似编译都通不过啊
      

  2.   

    主要是你的类和java.lang包中String类一样,你想new 你自己的String,而实际上new的是java自己封装好的类,而那个类确实没主函数的
      

  3.   

    我刚调试了下,觉得还有个可能.应该是public static void main(String[] args) 中的String问题这里的String是你自己的String而不是java自己的String,所以这个不符合主函数的要求.....
    应该是这个解释更合理......不过这是我的理解
      

  4.   

    public class String{
    public static void main(java.lang.String[] args) {}
    }
    这样是可以通过编译和运行的。因为你自己定义了String类,所以main中的String也就成了你自己的类型,不符合main方法的规范,加上全限定名即可
      

  5.   

    类名用了java中的关键字String,这样在后面程序中你要用到的String到底是你自己写的还是java中的String类?你要写清楚,java中有规定主方法必须为public static void main(String[] args){
         
    }
    除了args可以该,其他不能改!括号中的String指的就是java.lang.String,你要申明!否则就是你自己定义的String了。
    还有你有定义String str,这个str是字符串类型吗?不是的,是你的类String类型的,而你的构造方法里面传的和下面new的都是字符串,根本就不相符。哪里是要字符串类型申明下就好了:
    public class String{
    java.lang.String str;
    public  String(java.lang.String  str){
    this.str = str;
    } public static void main(String[] args) {
    // TODO Auto-generated method stub String str = new String("hello");
    System.out.println(str);
    }
    }
      

  6.   

    http://blog.csdn.net/a617717/article/details/39980181
    http://blog.csdn.net/a617717/article/details/39980409
    http://blog.csdn.net/a617717/article/details/39980799
    http://blog.csdn.net/a617717/article/details/39980777
    http://blog.csdn.net/a617717/article/details/39980731
    http://blog.csdn.net/a617717/article/details/39980813
    http://blog.csdn.net/a617717/article/details/39980707
    http://blog.csdn.net/a617717/article/details/39980685
    http://blog.csdn.net/a617717/article/details/39980661
    http://blog.csdn.net/a617717/article/details/39980757
    http://blog.csdn.net/a617717/article/details/39980639
    http://blog.csdn.net/a617717/article/details/39980619
    http://blog.csdn.net/a617717/article/details/39980607
    http://blog.csdn.net/a617717/article/details/39980409
    http://blog.csdn.net/a617717/article/details/39980559
    http://blog.csdn.net/a617717/article/details/39980181
      

  7.   

    public class String{
    java.lang.String str;
    public  String(java.lang.String  str){
    this.str = str;
    System.out.println(str);
    } public static void main(java.lang.String[] args) {
    // TODO Auto-generated method stub String str = new String("hello");
    System.out.println(str.str);
    }
    }以上代码能够正常运行。你最下面new的str可不是字符串哦,其实是你的String类的对象,在你new对象的时候给构造方法穿了一个字符串“hello”,所以,你要输出的str结果是对象的地址,而你应该输出的是str.str,这个结果才是你以为的系统会给你new出来的字符串“hello”。明白了吗?
      

  8.   

    完整的应该这么写
    public class String {
    public String(java.lang.String str) {
    super();
    this.s =str;
    }
    public java.lang.String s;
    public java.lang.String toString(){
    return "this"+" "+s;
    } public static void main(java.lang.String args[]){
    String str=new String("hello world");
    System.out.println(str);
    }
    }
      

  9.   

    classLoader首先会去加载java.lang.String,而不是你写的java.lang.String
      

  10.   

    package topics_390903109;public class String {    java.lang.String str;    public String(java.lang.String str) {
            this.str = str;    }    public static void main(java.lang.String[] args) {        String str = new String("hello");
            System.out.println(str);
        }
    }稍微改动一下,能够运行了……topics_390903109.String@15ff48b
      

  11.   

    你应该了解一下jvm了 JVM  为了安全问题 当出现和java api 核心类同名类时  会只装载java api 的核心类  而不装载你声明的类   而
    java.lang.String类 的确没有 main()方法  所以。。
      

  12.   

    唯9楼和11楼是正解。
    Java总是先加载rt.jar下的核心类,然后再加载本地类,接着才是其它类,且当一个类被加载后就不会再加载拥有相同限定名的类。
    所以你的执行过程变成了javac lang包下的String.class,而String.class没有main()方法,当然就报找不到main()方法。
      

  13.   

    是类名的问题,不能定义为String,String是java中的数据类型。