如何使用命令行编译具有多个文件的Java

时间:2019-04-02 07:04:17

标签: java linux class

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

  
      
  • main.java
  •   
  • object.java(编译时为Object.class)
  •   
  • living.java(编译时为Living.class)
  •   

object.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>;

在终端中,当我尝试

import living.java

在我得到的代码中

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

在终端

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

2 个答案:

答案 0 :(得分:1)

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

import Living;完成导入,情况相同。在package xyz;中使用Living.java时,必须使用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具有java xyz.Main,则为package xyz;)。

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

顺便说一句:也许您可以遵循在线上提供的许多教程之一,以快速了解Java ...

答案 1 :(得分:0)

@Arnaud评论:“请注意,如果所有三个类都在同一个程序包中,则无需在代码中导入它们”

在这种情况下,我不需要导入这些类,而无需进行导入工作。