当前位置: 代码迷 >> J2SE >> 请问一个有关问题,关于main方法的有关问题
  详细解决方案

请问一个有关问题,关于main方法的有关问题

热度:122   发布时间:2016-04-23 20:14:26.0
请教一个问题,关于main方法的问题
小菜今天学类加载器这部分,在学到运行时包这个概念的时候突发奇想,写下了如下代码,但代码的抛出的错误让我有点不太明白,毕竟对main方法没有深入的研究过,希望各路高手指点。
代码如下
package java.lang;

public class String {

/**
 * @param args
 */
String str;

public  String(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);
}
}

错误如下:
错误: 在类 java.lang.String 中找不到主方法, 请将主方法定义为:
   public static void main(String[] args)
------解决思路----------------------
classLoader首先会去加载java.lang.String,而不是你写的java.lang.String
------解决思路----------------------
你应该了解一下jvm了 JVM  为了安全问题 当出现和java api 核心类同名类时  会只装载java api 的核心类  而不装载你声明的类   而
java.lang.String类 的确没有 main()方法  所以。。。。。。。。
------解决思路----------------------
唯9楼和11楼是正解。
Java总是先加载rt.jar下的核心类,然后再加载本地类,接着才是其它类,且当一个类被加载后就不会再加载拥有相同限定名的类。
所以你的执行过程变成了javac lang包下的String.class,而String.class没有main()方法,当然就报找不到main()方法。
  相关解决方案