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

如何使用命令行编译包含多个文件的java,java,linux,class,Java,Linux,Class,我对Java和Linux相当陌生。我不能使用IDE,但我已经安装了jdk(显然)。我有三个.java文件要编译。一个是主代码文件和两个小类。如何使用终端编译它们? 这些文件称为: main.java object.java(编译时为object.class) living.java(编译时为living.class) java和living.java目前只有一个我想调用的构造函数 我试过了 javac main.java #this seems to be the right one jav

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

  • main.java
  • object.java(编译时为object.class)
  • living.java(编译时为living.class)
java和living.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;
在main.java文件中

但似乎什么都不管用

当我使用

import Living;
在代码中,它告诉我它遗漏了一个;或者

,当使用预编译

import Living.class
在我得到的代码中

error: class, interface, or enum expected
import <Object.class>;
在我得到的代码中

error: package living does not exist
import living.java;
在终点站


那么我做错了什么?我必须导入预编译类或java代码文件吗?我必须告诉javac我想要使用的所有文件还是只告诉main.java文件?当我不尝试导入其中一个类时,main.java编译不会出错。如果我必须使用.jar文件,请解释并给出一个示例

您的文件名必须与类名匹配,例如,如果您有一个
类{…
您的文件名必须命名为
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相同

要运行classes main方法,必须使用类名运行
java
可执行文件,其中包含
静态void main(…)
方法,例如
java main
(或者
java xyz.main
,如果main有
包xyz;

切勿创建
对象.java
,因为
对象
已被保留


顺便说一句:也许你会遵循在线提供的众多教程中的一个,来第一眼了解java…

正如@Arnaud评论的那样:“请注意,如果这三个类都在同一个包中,你不需要在代码中导入它们。”


在这种情况下,我不需要导入这些类,也不需要让导入生效。

请注意,如果所有三个类都在同一个包中,您不需要
在代码中导入它们。首先,感谢您的回答,但@Arnaud已经对答案进行了注释。我不必使用导入,也可以生效。然后,所有教程在线电话:是的,对于更大的项目,我会记住避免将对象作为类,并给file.java和file.class取相同的名称
error: package living does not exist
import living.java;