Як включити jar-файли з файлом java та компілювати в командному рядку


121

У мене є три jar файли та .java файл, який залежить від цих файлів jar. Як скомпілювати файл .java з цими файлами jar за допомогою командного рядка?


9
тип "javac -help"
Шон Патрік Флойд


2
сподіваюся, що це допоможе вам ..
Фахім Паркар

2
Зауважте, що потрібно: ви повинні використовувати -cp / -classpath прапор перед назвою файлу java, який ви хочете запустити, інакше він буде ігнорувати прапор. java -cp ".;magic.jar" Fooце нормально java Foo -cp ".;magic.jar", ні.
Дмитро

Відповіді:


108

Ви можете включити файли jar в команду "javac", скориставшись опцією "-cp".

javac -cp ".:/home/path/mail.jar:/home/path/servlet.jar;" MyJavaFile.java

Замість "-cp" ви також можете використовувати "-classpath"

javac -classpath ".:/home/path/mail.jar:/home/path/servlet.jar:" MyJavaFile.java

Ви можете включати банки щоразу, коли компілюєте, правильно встановивши змінну середовища "CLASSPATH". Змінна середовища буде зберігати шлях, де банки та класи, які потрібно використовувати для компіляції / виконання будь-якого файлу java. Вам не доведеться включати банки окремо кожного разу, коли ви компілюєте файл.

У різних машинах є різні методи встановлення classpath як змінної середовища. Команди для Windows, Linux тощо.

Більш детальну інформацію ви можете знайти в цьому блозі .

http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html

7
javac -classpath ".:/home/path/mail.jar;/home/path/servlet.jar" MyJavaFile.javaпрацював на мене. Я використовував mac. Я десь прочитав, що ':' використовується для unix.
Шрі

2
Я використовував цю команду, але коли намагався отримати доступ до класу, присутнього у файлі jar, я отримую ClassNotFoundException.
Мухаммед Рампуравала

3
що робить .:? вибачте, якщо це німе питання, але це мені не очевидно.
Міранда

1
@kensen. Друкарська помилка. замінити: (двокрапка) крапкою з комою (;)
Панкай Сінде

Вище не працював для мене на ubuntu. Я пробував без лапки, і це спрацювало. Вих. javac -cp .:/home/path/mail.jar:/home/path/servlet.jar; MyJavaFile.java
Альфас Джикані

24

Спробуйте спробувати Linux

javac -cp jarfile source file 

ПРИКЛАД: -

javac  -cp .:/jars/* com/template/*.java

Коли я пробую ПРИКЛАД: - , із .:/jarsзаміненим на каталог, в якому знаходяться мої файли JAR, я отримую повідомлення про помилку javac: invalid flag: /location/of/first/jar/file.jar.
Артуро дон Хуан

stackoverflow.com/questions/27915204 / ... будь ласка refere це, може вирішити вашу проблему
Джамшір

20

Синтаксис буде працювати над командою Windows dos:

javac -cp ".;first.jar;second.jar;third.jar" MyJavaFile.java

4
Після успішного виконання вищевказаної команди, як запустити файл класу java?
Yash Agrawal

java -cp first.jar: second.jar: third.jar MyFile
Krsna

15

Спробуйте додати всі файли jar-залежності до шляху вашого класу через налаштування змінної середовища або скористайтеся наведеними нижче кроками:

  1. Відкрити командний рядок.
  2. Змініть каталог на розташування файлу java, який ви хочете скласти.
  3. Встановіть класний шлях для ваших файлів jar-залежності, як показано нижче:

    set classpath=C:\Users\sarath_sivan\Desktop\jars\servlet-api.jar; C:\Users\sarath_sivan\Desktop\jars\spring-jdbc-3.0.2.RELEASE; C:\Users\sarath_sivan\Desktop\jars\spring-aop-3.0.2.RELEASE;

  4. Тепер ви можете скласти файл Java. (Команда: javac YourJavaFile.java)

Сподіваємось, це вирішить вашу проблему залежності.


15

Наступні етапи -

  1. Скопіюйте всі банки та файл .java в одну папку (імена файлів буде легко згадувати замість того, щоб згадувати довгий шлях. Хоча ви можете зберігати jar та .java в окремих папках).

  2. Щоб скласти,

    javac -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>.java
  3. Щоб виконати,

    java -cp .:<file_1_name>.jar:<file_2_name>.jar <prog_name>

Я сподіваюся, що це допомагає!


1
Дякуємо, що також показали, як виконати. Що робить точкова кишка знову? Це поточний каталог та роздільник файлів?
ThisClark

Так, це поточний каталог і роздільник файлів Unix (у Windows це крапка з комою).
MathuSum Mut

6

Це створить .class файл:

javac -classpath "[jarname with specified path]" [java filename]

Це виконає файл класу:

java -cp [jarname with specified path]: [java filename]

1
Команда java показує помилку Викликано: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory Я хочу скласти ** javac -classpath "/home/scorncer/Downloads/spark-core-2.3.jar" MyFile.javaі ** run java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile.java also i tried java -cp /home/scorncer/Downloads/spark-core-2.3.jar: MyFile
Yash Agrawal


2

Потрібно вказати залежності в часі компіляції, а також по часу виконання

Для компіляції використовуйте цей формат

javac -cp "*.jar;classfile_path" filename.java

Приклад:

javac -cp "ojdbc6.jar;c:\programs" Main.java

Ця відповідь, хоча і правильна, насправді не додає нічого, чого інші відповіді вже не кажуть. Якщо між цим та іншими відповідями є якась ключова різниця, було б краще пояснити, чому ваша відповідь відрізняється.
DaveyDaveDave

Ви згадали, вказуючи залежності під час виконання, а також час компіляції, але не пояснюєте, як вказати їх під час виконання.
Майкл Фултон

1

кілька разів здійснюючи такі зміни:

java -cp ".;%CLASSPATH%" classfilename 

Примітка: ON Windows. Для використання Linux $CLASSPATHнатомість.


1
javac -cp jars/jar1:jars/jar2:jars/jar3 abc.java

5
Хоча цей код може вирішити питання, включаючи пояснення, як і чому це вирішує проблему, справді допоможе покращити якість вашої публікації та, ймовірно, призведе до збільшення кількості голосів. Пам'ятайте, що ви відповідаєте на запитання читачів у майбутньому, а не лише про людину, яка зараз задає питання. Будь ласка, відредагуйте свою відповідь, щоб додати пояснення та вказати, які обмеження та припущення застосовуються.
подвійний звуковий сигнал

0

Якщо ви використовуєте Ubuntu:

/opt/JavaServices/sqlite $ export CLASSPATH=/opt/JarFiles/XXXX.jar:/opt/JarFiles/XXXX.jar:/opt/JavaServices/;javac SQLiteSample.java

Перехід до місця папки (Не в структурі пакета)

/opt/JavaServices $ export CLASSPATH=/opt/JarFiles/XXXXX.jar:/opt/JarFiles/XXXXX.jar:/opt/JavaServices/;java sqlite.SQLiteSample

Примітка. Будь ласка, перегляньте розташування файлів та назви пакетів


-1

Для вікон

  1. підключіться до каталогу, де файли java є в командному рядку.
  2. встановити classpath (тут d = назва папки) встановити classpath = C: \ d1 \ d2 \ d3 \ d4 \ d5 \ d6 \ d7.jar;
  3. натисніть Enter і
  4. тепер компілюйте файл java javac filename.java
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.