Как запускать Java-программы из терминала?

#java #eclipse #macos #terminal #osx-lion

#java #eclipse #macos #терминал #osx-lion

Вопрос:

Я пытаюсь запустить Java-программу со своего терминала. У меня Mac OS X 10.7.

teamL javac -jar kxml2-2.3.0.jar XMLHandler.java ServiceEndpoint.java TeamL.java

Это моя файловая структура класса Eclipse:

структура файла класса eclipse

Я не могу найти, почему это происходит? Unable to access jarfile kxml2-2.3.0.jar

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

1. для меня похоже, что он не находит jar-файл

2. @Vinisa, примите ответ и закройте этот вопрос

Ответ №1:

Если вы ссылаетесь на какие-либо внешние библиотеки, вам нужно добавить их в classpath . Вы можете добавить его во время компиляции классов таким образом.

Перейдите в каталог src и :

 javac -classpath ".:<path_to_jar_file>" teamL/*.java
  

ДЛЯ выполнения :

 java -cp ".:<path_to_jar_file>" teamL.<class_name>
  

если вы используете eclipse, перейдите <project_directory>/bin/ сюда, где вы можете найти скомпилированные классы (поэтому вам не нужно их компилировать) и напрямую запускать их с помощью приведенной выше java команды

Примечание: поскольку ваши классы упакованы в teamL пакет, вы должны запускать классы из-за пределов пакета, указав полное имя, например teamL.ServiceEndpoint

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

1. Вы не можете использовать -jar для компиляции, -jar используется для непосредственного выполнения jar-приложения. Я не знаю, где именно находится папка вашего проекта! Я думаю, вы должны знать, как изменить текущий каталог с помощью cd команды в терминале. Просто cd Documents/adsproject/ADS_Deliverable1/src/ в терминале, затем javac -classpath ".:<path_to_jar_file>" teamL/*.java

2. хорошо, глядя на скриншот, я вижу, что ваш каталог проекта home/Users/vsingh3/Documents/adsproject/ADS_Deliverable1 открывает новый терминал, затем введите cd Documents/adsproject/ADS_Deliverable1/src Then javac -classpath ".:Documents/adsproject/ADS_Deliverable1/<path_to_jar_file>" teamL/*.java

3. Спасибо, но я только что заметил ваш комментарий о том, работаете ли вы в eclipse. Итак, я думаю, мне не нужно компилировать. Другое дело, что, поскольку мой файл jar не был найден, я скопировал и вставил его в каждую из папок. У меня есть все мои исходные файлы и файл jar ADS_Deliverable1->src->teamL . Сейчас я запускаю его как> teamL java -cp -jar kxml2-2.3.0.jar XMLHandler.java ServiceEndpoint.java TeamL.java Почему это выбрасывает Exception in thread "main" java.lang.NoClassDefFoundError: kxml2-2/3/0/jar Caused by: java.lang.ClassNotFoundException: kxml2-2.3.0.jar

4. То же самое работает в Windows Eclipse правильно. Также почему я не могу запустить то же самое из своего eclipse?

5. Как я уже говорил ранее, не используйте -jar для добавления файлов jar в classpath ! чтобы упростить задачу, скопируйте файл jar в папку src, затем javac -cp . teamL.<main_class> , если ServiceEndpoint это ваш основной класс, тогда вы должны использовать java -cp . teamL.ServiceEndpoint lemme знать, сможете ли вы успешно запустить это..

Ответ №2:

Добавили ли вы этот jar в путь к классу при выполнении программы в командной строке? например

java -путь к классу location_of_jar …

Ответ №3:

javac это команда для компиляции, вместо которой вы должны использовать команду Java.

  • Сначала задайте путь к классу
  • Затем запустите его следующим образом

java -classpath %classpath variable% %YourClass% %аргументы…

Запуск Java-программы из командной строки это может дать вам лучшую идею для Windows, но аналогично.