![](/img/trans.png)
[英]Why do I get “Static Error: This class does not have a static void main method accepting String[].” even though I have it?
[英]Getting “class does not have a static void main method accepting String[]” error even though main signature is correct
我的DrJava运行正常,但现在无论何时运行任何操作,我都会不断收到以下错误:
Static Error: This class does not have a static void main method accepting String[].
因此它将编译正常,但随后它会发芽错误。 即使我测试的所有内容确实确实具有一个公共的静态void main(String [] args),也会发生这种情况。 似乎是类路径/资源类型的错误。 我感谢任何提示
编辑:我的课
public class Test{
public static void main(String[] args){
System.out.println(" hashmap ");
}
}
代码没有错,所以问题一定出在环境上 。
main()
之前已编译的旧版本 您无需重新安装Java,也不是Java版本问题。 这可能是您运行程序的方式。 要检查您的代码是否有问题,请执行以下操作:
新建一个文件夹,然后将Test.java放入其中。
打开命令行或终端,然后转到该文件夹。
键入javac Test.java 。 Test.class应该现在位于文件夹中。
如果需要,可以使用文本编辑器打开该类。 这是我得到的:
˛∫æ2
<init>()VCodeLineNumberTablemain([Ljava/lang/String;)V
SourceFile Test.java hashmap Testjava/lang/Objectjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/l ang/String;)V! *∑±
% ≤∂±
返回命令行或终端,输入java Test 。
如果遇到错误(不应该这样),我不知道该说些什么。 它应该在命令行或终端上生成字符串“ hashmap”。
为什么重新安装Dr. Java可能不起作用,是因为您可能使用了相同的工作目录,从而导致使用了相同的运行设置。 Java博士可能正在运行一个外部程序,而没有一个主要方法。
我认为您应该安装Eclipse IDE for Java。 它很容易解决,看起来更好,并且可以运行您当前正在查看的文件或项目。
有时会发生此问题,因为在保存文件时可能会出错。您始终使用双引号和.java扩展名(主类)来表示该文件包含主方法。
您应该使用public的类名保存文件。如果有两个类并且都具有main方法,则应该使用public的类名保存文件,并且该类将运行。就像您的编译器在main中寻找main方法一样public static void main(String [] args),它是jvm运行程序的合同,因此它无法找到那个main方法是静态的,并且正在寻找您的Dr类。java请参见本示例,它有两个主要方法,实践这些问题。我在开始时也遇到了这类问题。
public class TestFirst
{
public static void main(String [] args){
System.out.println(" TestFirst ");
}
}
class Test{
public static void main(String [] args){
System.out.println(" hashmap ");
}
}
如果您通过“ TestFirst.java”保存程序,则如果您在主要方法中犯了一些错误,则O / p将出现TestFirst,因为我们已经通过TestFirst保存了程序,那么您将得到错误。
@第二个错误可能是这个
debian@debian:~/Geany_java$ javac Test1.java
debian@debian:~/Geany_java$ java Test1
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
at Test1.main(Test1.java:11)
您的类路径设置不正确请参见上文编译成功,但运行时显示出与您相同的错误。正在使用哪种操作系统,我可以正确地指导您。
检查您的文件实际上是否具有.java终止符或.dj
代码没有错。
执行环境可能有问题。 请分享细节。
正如其他人提到的那样,您的代码很好。 您的环境一定有问题。 我最近在调查和回答此问题时遇到了类似的问题 。
基本上,在该问题中, Void.class instanceof Class
的代码Void.class instanceof Class
导致编译器错误,因为在类路径中存在用户制作的Class.class
,因此一个Class
(Java内置java.lang.Class
)不匹配与给定的Class
(用户定制)。
类似的事情可能在这里起作用。 您的类路径中可能有一个用户制作的String.class
。 然后在你的main
签名, String[] args
将意味着你的数组String
,当Java的医生必须寻找一个main
采取了Java数组方法内置String
,即java.lang.String[]
如果您在类路径中(或在项目中?)有一个自定义String
类,那么Java编译器将选择它而不是内置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
类。
如果不查看您的环境,就无法确定这是问题所在。 但这可以解释。
如果您将Dr.Java用作IDE,则需要确保包含“ public static void main”的主类应位于程序的顶部。 否则,Dr.Java在运行时会引发此错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.