#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:
Я не могу найти, почему это происходит? 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
Thenjavac -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, но аналогично.