Как скомпилировать Java-класс с помощью .зависимости jar от командной строки Linux

#java #ubuntu #visual-studio-code

#java #ubuntu #visual-studio-code

Вопрос:

Я студент CS, работаю со своим первым файлом .jar, и у меня возникли проблемы с компиляцией моего класса, который зависит от него. Я использую VSCode в качестве редактора кода, и я добавил файл .jar в раздел «Ссылочные библиотеки» моего java-проекта. Класс, который я пытаюсь запустить, — это довольно простой класс, созданный на основе нашего учебника, с сопутствующим файлом .jar, в котором есть множество пользовательских библиотек. Я могу видеть содержимое jar в браузере проекта java VSCode, но когда я пытаюсь скомпилировать, я получаю ошибки import и symbol not found. Обычно я компилирую и запускаю свои проекты в окне терминала (запускаю Ubuntu 18.04 поверх Windows с использованием WSL), просто набрав «javac MyClass.java «. Я бы ожидал, что если jar был загружен в VSCode, то он должен компилироваться таким же образом, но, похоже, это не так. Я попробовал рекомендуемый синтаксис «javac -cp /lib/myjar.jar MyClass.java » и «javac -jar /lib/myjar.jar MyClass.java » но ни то, ни другое не работает для меня.

Я совершенно уверен, что мне не хватает чего-то простого, поскольку у меня нет никакого опыта работы с jars, и уж точно не в VSCode. У кого-нибудь есть идея, чего мне не хватает?

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

1. javac -cp должен работать. Вы должны опубликовать то, что вы на самом деле пробовали, и каков был результат.

2. Лучше всего использовать maven или gradle. Я могу помочь с maven, если вы создадите репозиторий на githab, я могу создать запрос на извлечение.

3. @Deadron Я пытался использовать «javac -cp /lib/algs4.jar ThreeSum.java » из папки, содержащей файл класса, и я получаю сообщения о том, что он не может найти jar. Я попытался использовать полный путь после -cp («javac -cp /mnt/c/School/CofCSpring2021/CSCI230/lib/algs4.jar ThreeSum.java «) и это сработало. Есть ли способ выполнить компиляцию из командной строки без использования полного пути (я просто делаю синтаксическую ошибку Linux)? Кроме того, какой смысл импортировать jar в VSCode, если мне все равно придется явно указывать его местоположение при каждой компиляции?

4. @numberTwo Когда путь в начинается с /, это означает, что он относится к корню диска. Вероятно, вы хотели, чтобы путь был lib/myjar.jar без / в начале. IDE используют свои собственные пользовательские инструменты для создания вашего проекта, которые обычно недоступны из командной строки. Именно здесь на помощь приходят такие инструменты, как maven и gradle, которые помогут вашему проекту последовательно создавать из командной строки и из IDE. Для получения дополнительной информации о том, как использовать maven, см. раздел Чтение maven.apache.org/guides/getting-started /…

5. @Deadron спасибо вам за помощь с синтаксисом, теперь я понимаю, что я там делал не так. Это тоже имеет смысл в отношении IDE, я изучу Maven, продолжая работать в этом семестре. Вся информация очень ценится, спасибо.