最近我刚刚在java中遇到错误
Exception in thread "main" java.lang.NoSuchMethodError: main
Run Code Online (Sandbox Code Playgroud)
即使我的班级只有3行代码.
public class Test{
public static void main(String[] args){
System.out.println("hello");
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么会发生这种情况,但后来我知道有一个公共类String我曾在同一个包中尝试过和创建过.
所以现在出现的新问题是在这种情况下会发生什么,虽然String不是keyword在java中定义的(你可以在你的代码中使用)
然后我刚从包中删除了String.java和String.class文件,但听起来很奇怪你也不能使用String类.
问题:java是否优先考虑我们的自定义类?
And*_*ter 32
你的主要方法需要匹配
public static void main(java.lang.String[] args){ ... }
Run Code Online (Sandbox Code Playgroud)
如果您String在使用main方法的类所在的同一个包中创建自己的类,它将成为
public static void main(your.own.package.String[] args){ ... }
Run Code Online (Sandbox Code Playgroud)
这是有效的,但不允许运行时启动程序再找到一个main方法,因为它需要java.lang.String[]作为参数.
java.lang默认情况下会自动导入类,因此您不需要显式import语句 - 这可能会让您更加困惑.
根据经验,我会尽可能避免将自己的类命名为Java Runtime中的类,尤其是来自java.lang.
另请参阅JLS:第7章.包:
包由许多编译单元组成(第7.3节).编译单元自动访问其包中声明的所有类型,并自动导入预定义包java.lang中声明的所有公共类型.
| 归档时间: |
|
| 查看次数: |
878 次 |
| 最近记录: |