как скомпилировать Java с несколькими файлами с помощью командной строки

#java #linux #class

#java #linux #класс

Вопрос:

Я довольно новичок в 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, пожалуйста, объясните и приведите пример

Комментарии:

1. Обратите внимание, что если все три класса находятся в одном пакете, вам не нужно import использовать их в своем коде.

2. dummies.com/programming/java/how-to-use-the-javac-command

Ответ №1:

Имя вашего файла должно соответствовать имени класса, например, если у вас есть class Living {... ваше имя файла должно быть названо Living.java . Имейте в виду, что здесь используется один и тот же символьный регистр. Если вы используете package xyz; in Living.java , вам также необходимо поместить свой файл в подкаталог xyz (например xyz/Living.java ).

Импорт должен выполняться import Living; с тем же регистром. При использовании package xyz; в вашем Living.java , вы должны использовать import xyz.Living; . Классы в одном пакете не нужно импортировать.

Вы компилируете свои файлы с помощью javac Living.java или с помощью package javac xyz/Living.java . javac Будет создан файл Living.class / xyz/Living.class .

То же самое с Main.java .

Чтобы запустить метод класса main, вы должны запустить java исполняемый файл с именем класса, который содержит static void main(...) метод, например, java Main (или java xyz.Main если у Main есть package xyz; ).

Никогда не создавайте, Object.java поскольку Object он уже зарезервирован…

Кстати: может быть, вы следуете одному из многих руководств, доступных онлайн, чтобы получить первое представление о Java…

Комментарии:

1. прежде всего, спасибо за ваш ответ, но @Arnaud уже прокомментировал ответ. мне не нужно использовать импорт, и это работает. Затем все онлайн-руководства говорят мне использовать IDE. И да, для более крупных проектов я буду помнить о том, чтобы избегать Object как класса и предоставлять file. java и file.class то же имя

Ответ №2:

как прокомментировал @Arnaud: «Обратите внимание, что если все три класса находятся в одном пакете, вам не нужно импортировать их в свой код»

в этом случае мне не нужно импортировать эти классы, и если оставить импорт, все работает.