最近我在java中遇到了一个错误
Exception in thread "main" java.lang.NoSuchMethodError: main
即使我的课程只有 3 行代码。
public class Test{
public static void main(String[] args){
System.out.println("hello");
}
}
我想知道为什么会发生这种情况,但后来我知道有一个公共类 String,我在同一个包中尝试并创建了它。
所以现在出现的新问题是在这种情况下会发生什么,尽管 String 不是keyword
在java中定义(您可以在代码中使用)
然后我刚刚从包中删除了 String.java 和 String.class 文件,但听起来很奇怪,你也不能使用 String 类。
问题:java 是否优先考虑我们的自定义类?
你的 main 方法需要匹配
public static void main(java.lang.String[] args){ ... }
如果您创建自己的String
与您的 main 方法所在的类位于同一包中的类,它将变成
public static void main(your.own.package.String[] args){ ... }
这是有效的,但不允许运行时启动器再找到主方法,因为它期望java.lang.String[]
作为参数。
课程来自java.lang
默认情况下会自动导入,因此您不需要显式import
声明 - 这可能会让你更加困惑。
根据经验,只要有可能,我都会避免将自己的类命名为与 Java 运行时中的类相同的名称 - 尤其是来自 Java 运行时的类。java.lang
.
另请参阅JLS:第 7 章。包 http://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.5:
一个包由许多编译单元组成(第 7.3 节)。一个编译单元自动有权访问其包中声明的所有类型并且自动导入预定义包 java.lang 中声明的所有公共类型.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)