Импорт, банки и сердце болит

Прежде всего позвольте мне начать с того, что я совершенно новичок в Java, но чтобы дать вам представление о том, насколько новы; Я начал читать много книг, примеров и так далее, и начал программировать на Java с использованием Eclipse около 2 месяцев назад. Тем не менее, я нашел очень классный совет по использованию блокнота и терминала для программирования. В некотором роде сумасшедший для новичка, чтобы пройти трудный путь, но я люблю вызов, и я серьезно отношусь к обучению.

Итак, в Eclipse я действительно хорошо разбирался в том, как импортировать, добавлять jars-компиляцию и т. Д. Когда я начал использовать pico и использовать терминал (я использую ubuntu) для компиляции, все прошло очень хорошо, пока я не захотел использовать пакеты. Я потратил два дня на то, чтобы вырвать мои волосы, потому что, что бы я ни делал, я не могу этого понять.

Я пытаюсь использовать acm.jar (который у меня есть много раз в Eclipse), однако я полностью потерян, как использовать его при компиляции из javac в терминале.

Итак, я прошу, чтобы кто-то объяснил, как заставить мой jar-файл работать.

Все, что я использую для создания своих Java-программ - это пико (или блокнот) и javac в терминале.

2 ответа

Предполагая, что ваши исходные файлы находятся в src, Предполагая, что вы хотите, чтобы ваши скомпилированные классы были в classes, Предполагая, что ваши исходные файлы ссылаются на классы, которые находятся в lib/acm.jar:

javac -cp classes:lib/acm.jar -d classes src/com/foo/bar/MyClass.java

скомпилирует класс com.foo.bar.MyClass и положить сгенерированный MyClass.class файл в classes/com/foo/bar,

Вам нужно acm.jar файл в пути к классам. Вот что -cp lib/acm.jar вариант делает. Вам также нужно classes в classpath, потому что MyClass, вероятно, ссылается на другие классы, которые вы уже скомпилировали и которые находятся в вашем classes каталог.

Чтобы запустить ваш класс, он должен быть в classpath, а также в acm.jar:

java -cp classes:lib/acm.jar com.foo.bar.MyClass

Как видите, classpath содержит файлы JAR и каталоги, содержащие иерархию папок, которая соответствует иерархии пакетов.

Я бы не стал использовать javac из командной строки напрямую. Попробуйте использовать настоящий инструмент для сборки, который соберет все ваши классы одновременно, например, Gradle или Ant. Maven также очень популярен, но я ненавижу это со страстью.

Чтобы скомпилировать и запустить класс Java с использованием внешних библиотек, вы должны добавить эту библиотеку в путь к классам. Путь к классам - это набор мест, где компилятор java и JVM ищут все внешние библиотеки / классы, которые ему нужны в процессе компиляции / выполнения.

Установка пути к классу может быть выполнена двумя способами:

  1. Установите переменную среды с именем CLASSPATH
  2. Установите его, когда вы запускаете javac/java

Установка classpath при запуске javac/java выполняется следующим образом:

javac -cp path/to/jar1:path/to/jar2:path/to/jar3:path/to/dirContainingClasses
yourMainClass.java

Бежать:

java -cp path/to/jar1:path/to/jar2:path/to/jar3:path/to/dirContainingClasses
yourMainClass

: используется как разделитель в Linux, для окон;

Другие вопросы по тегам