正如其他人所提到的,您的代码很好。你的环境一定有问题。我最近在调查和回答这个问题时遇到了类似的问题。
基本上,在那个问题中,代码Void.class instanceof Class
导致编译器错误,因为Class.class
类路径中存在用户制作的,所以一个Class
(Java内置)与给定的(用户制作的)java.lang.Class
不匹配。Class
类似的东西可能在这里起作用。您的类路径中可能存在用户自String.class
定义。然后在您的main
签名中,将意味着您String[] args
的数组,当 Java 博士必须寻找采用 Java 内置数组的方法时,即. 如果您的类路径(或项目中?)中有一个自定义类,那么 Java 编译器将选择它而不是内置的. 如果你从命令行编译和运行你的类,那么你会得到运行时错误:. String
main
String
java.lang.String[]
String
String
Test
Exception in thread "main" java.lang.NoSuchMethodError: main
按照@S0urceC0ded 的建议,Test.class
在文本编辑器中查看时可能会发现:
main([LString;)V // A user-made String class
而不是它应该是:
main([Ljava/lang/String;)V // The built-in java.lang.String class
如果是这样,请从类路径中删除您自己的String
类(至少是 .class 文件,还有 .java 文件,这样就不会重新创建 .class 文件),然后Test
再次编译并运行您的类。
如果不查看您的环境,我无法确定这是问题所在。但它可以解释它。