java未定义对“main';collect2:ld返回了1个退出状态

java未定义对“main';collect2:ld返回了1个退出状态,java,linux,Java,Linux,我在编译java文件时遇到问题。 我的编译命令:javac-g HelloWorld.java 我写了一个简单的hello world程序: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } } 我使用的是putty,我正在连接ssh。我得到这个错误: /usr/lib64/gcc/x86_64-su

我在编译
java
文件时遇到问题。 我的编译命令:javac-g HelloWorld.java

我写了一个简单的hello world程序:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello, World");
    }

}
我使用的是
putty
,我正在连接
ssh
。我得到这个错误:

/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../lib64/crt1.o: In function `_start':
/home/abuild/rpmbuild/BUILD/glibc-2.14.1/csu/../sysdeps/x86_64/elf/start.S:109: undefined reference to `main'
collect2: ld returned 1 exit status

如我所见,您使用的是gcc javac编译器,它与SUN/Oracle实现不同

我想您需要将
--main=HelloWorld
添加到命令中。由于几个类可能有一个“main”方法,所以需要告诉链接器使用哪个方法

此外,您可能需要添加-o,否则,您将得到一个“a.out”文件,这是GNU编译器(以及任何C编译器)的默认可执行文件名


希望这有帮助

您已经向我们展示了代码,但没有说明您正在使用它做什么。现在我只想编译它。您的Java设置正确吗?您可以展示您用于编译的命令吗?我正在其他地方连接Linux计算机,实际上是从我的学校连接的。他们是正确的@KeerthiRamanathanI会卸载无用的GNU“Java编译器”。它实际上并不是这样的东西,只是一个小的、不断缩小的子集的未经证明的近似值。