0

我编写了一个简单的 java 程序,如下所述。不幸的是发生了编译错误。

class String {
    public static void main(String[] args) {
         System.out.println("stre");
    }
}

在命令提示符下编译期间会出现以下内容:

c:\Java>java String Error: Main method not found in class String,请将main方法定义为:public static void main(String[] args)

它不适用于我的任何程序,甚至不是这个简单的程序!为什么是这样?

编辑:

我现在有:

import java.lang.*;
import java.lang.String.*;

class incogn {
    public static void main(String[] args) {
        System.out.println("stre");
    }
}

它不工作。为什么这不起作用?

它说的和以前一样。

你所说的 Java.lang.String[] 有效,但为什么不能呢?为什么我以前不需要穿上这些?

4

5 回答 5

3

这可能是因为您使用班级的名称,与;String冲突。java.lang.String换句话说,您已经编写了您的 main 方法将您的类的实例作为输入,而不是 main 方法需要采用的实例,即java.lang.String. 尝试任一

  1. 重命名你的班级
  2. 将您的签名更改为public static void main(java.lang.String[] args) {
于 2012-10-29T00:26:05.763 回答
0
  1. 不要创建名为“String”的 java 文件,因为它是 java.lang.String 中的 java 库类
  2. 将课程设为公开

所以,编写你的源代码如下:

public class StringDemo {
    public static void main(String[] args) {
         System.out.println("stre");
    }
}

现在编译它。我相信它会运作良好。

于 2013-03-01T09:50:42.473 回答
0

1)班级应该是public

2)避免称你为 class String,因为它有重复的名称java.lang.String(你仍然可以,但不好)。否则,您的主要方法的参数类型错误。

3)您不必从java.lang包中显式导入。


public class String {
    public static void main(java.lang.String[] args) {
         System.out.println("stre");
    }
}

或者

public class YourClass {
    public static void main(String[] args) {
         System.out.println("stre");
    }
}

尝试使用第二种形式。

于 2013-03-01T11:29:22.900 回答
0

好吧,给出你的类名String然后调用main(String[] args)是模棱两可的,如果它意味着java.lang.String或者你新定义的类,但是使用java范围规则,它将使用你的,除非另有声明。


修改后更新

没有java.lang.String ,但它是一个。因此,你不能说

import java.lang.String.*;

通过添加“ .*”,编译器可以理解这指的是某个包String

一个例外是静态导入,但这不是您需要的。

于 2012-10-29T00:27:16.993 回答
0

你不应该调用你的类 String,它会与 java 类 String 冲突。

或者,您可以将代码更改为:

class String {
    public static void main(java.lang.String[] args) {
         System.out.println("stre");
    }
}
于 2012-10-29T00:27:30.417 回答