编译我的简单Java文件时编译错误

时间:2012-10-29 00:23:48

标签: java compilation compiler-errors

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

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

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

c:\ Java> java String 错误:在类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 []的说法有效,但为什么不呢?为什么我不需要在此之前提出任何一个?

5 个答案:

答案 0 :(得分:3)

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

  1. 重命名课程
  2. 将您的签名更改为public static void main(java.lang.String[] args) {

答案 1 :(得分:0)

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


修改后更新

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

import java.lang.String.*;

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

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

  1. 不要创建名为“String”的java文件,因为它是java.lang.String中的java库类
  2. 将课程设为公开
  3. 所以,编写源代码如下:

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

    立即编译。我相信它会运作良好。

答案 4 :(得分:0)

1)该课程应为public

2)避免将您称为班级String,因为它与java.lang.String具有重复的名称(您仍然可以,但不是很好)。否则,您的main方法的参数类型错误。

3)您无需从java.lang包明确导入。


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

OR

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

尝试使用第二种形式。