如何使用命令行编译包含多个文件的 Java



我对Java和Linux很陌生。我不能使用 IDE,但我安装了 jdk(显然)。我有三个.java文件要编译。一个是主代码文件和两个小类。如何使用终端编译它们? 这些文件称为:

  • 主.java
  • 对象.java(对象.class编译时)
  • 生活.java(生活.class编译时)

对象.java和生活.java现在只有一个我想调用的构造函数

我试过了

javac main.java #this seems to be the right one
javac main.java object.java living.java
javac main.java Object.class Living.class

在终端和

import object.java;
import living.java;
import Object.class;
import Living.class;
import object;
import living;
import Object;
import Living;

在主.java文件中

但似乎没有任何效果

当我使用

import Living;

在代码中,它告诉我它错过了一个 ; 或 .

,使用预编译时

import Living.class

在我得到的代码中

error: class, interface, or enum expected
import <Object.class>;

在终端中和当我尝试时

import living.java

在我得到的代码中

error: package living does not exist
import living.java;

在终端中

那么我做错了什么? 我必须导入预编译类或 Java 代码文件吗? 我是否必须告诉 javac 我想使用的所有文件或仅告诉 main.java 文件? main.java 当我不尝试导入其中一个类时,编译没有错误。如果我必须使用.jar文件,请解释并举例说明

您的文件名必须与类名匹配,例如,如果您有class Living {...则文件名必须命名为Living.java。请注意此处相同的字符大小写。如果您在Living.java中使用package xyz;,您还必须将文件放在子目录xyz(例如xyz/Living.java)。

导入将由import Living;完成,情况相同。在Living.java中使用package xyz;时,您必须使用import xyz.Living;。 不需要导入同一包中的类。

通过使用javac Living.java或包javac xyz/Living.java编译文件。javac将生成Living.class/xyz/Living.class文件。

Main.java相同。

要运行类 main 方法,您必须使用类名运行java可执行文件,其中包含static void main(...)方法,例如java Main(如果 Main 有package xyz;,则java xyz.Main)。

永远不要创建Object.java,因为Object已经被保留了......

顺便说一句:也许您遵循在线提供的众多教程之一,以初步了解Java...

正如@Arnaud评论的那样:"请注意,如果所有三个类都在同一个包中,则无需在代码中导入它们">

在这种情况下,我不需要导入这些类,并且保留导入即可。

最新更新