1

我想通过在 Linux Ubuntu 中使用来编译一个简单的 Java“Hello World”程序,就像GeeksforGeeks Hello World 教程中的那样。gcj这是源代码:

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

但是gcj抛出了两个错误:

  1. (.text+0x18): 未定义的引用main
  2. collect2:错误:ld 返回 1 个退出状态

终端的原始输出:

gcj -o helloworld HelloWorld.java
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: error: ld returned 1 exit status

我会注意以下要求,即 .java 文件应以包含的类命名main

要点:

  • 程序定义的类名是HelloWorld,与文件名(HelloWorld.java)相同。这不是巧合。在 Java 中,所有代码都必须位于一个类中,并且最多有一个包含 main() 方法的公共类。
  • 按照惯例,主类(包含主方法的类)的名称应与保存程序的文件的名称相匹配。

我究竟做错了什么?

4

1 回答 1

1

您在文档--main=中缺少该选项,该选项用于链接时指定在运行生成的可执行文件时应调用其 main 方法的类的名称。

gcj -o helloworld --main=HelloWorld HelloWorld.java
于 2020-01-18T17:32:50.280 回答