Используйте javac с несколькими конкретными jar-файлами в classpath в Linux (тильда не расширяется после двоеточия) - PullRequest
4 голосов
/ 03 февраля 2012

Я пытаюсь скомпилировать исходный файл java, который использует два jar-файла (коллекции commve trove и apache) с помощью команд, аналогичных приведенным ниже

javac -cp ~/.m2/repository/gnu/trove/trove/3.0.0/trove-3.0.0.jar:~/git-workspace/grid/libs/commons-collections-3.2.1.jar $(find . -name TimeJavaCode.java)

В приведенном выше примере код общего ресурса неуспешно включен, и есть ошибка компиляции, где я использую библиотеку commons.Если я переверну порядок импорта, то возникнут ошибки компиляции, где я использую trove.Я попытался экспортировать в переменную, а также использовать одинарные и двойные кавычки в строке cp, но безрезультатно (в таких случаях ни один из экспортов не выполняется успешно, и есть ошибки компиляции для trove и commons).Вы уже рассматривали следующие предыдущие вопросы:

Установка нескольких jar-файлов в пути к классам java

Использование нескольких .jar с javac

Как правильно добавить две банки?

1 Ответ

11 голосов
/ 03 февраля 2012

Вместо использования ~, измените реальный путь (т. Е. /home/<your username>/...), он должен работать как положено.

Чтобы уточнить, это не специфическая проблема Java, попробуйте это вshell:

$ echo ~/.bashrc:~/.bashrc

Вы должны получить что-то вроде:

/home/icyrock.com/.bashrc:~/.bashrc

(где icyrock.com, конечно, заменяется вашим логином).Второй ~ не расширен bash, поэтому сталкиваюсь с проблемами.Вы ожидаете, что он расширится до:

/home/icyrock.com/.bashrc:/home/icyrock.com/.bashrc

Вот почему у вас есть опыт "первый работает, второй нет".

Просмотр руководства по bash:

Вы можете увидеть это:

Если слово начинается с символа кавычки без кавычек ('~'), все символы до первой косой черты без кавычек (или все символы, если нет косой черты без кавычек) считаются префиксом тильды.

(выделение мое), поэтому только первая тильдарасширен, так как вторая тильда находится не в начале слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...