Пользователь Mac - Как мне установить CLASSPATHS в Mac (я работаю над демонстрацией Lucene) - PullRequest
6 голосов
/ 02 февраля 2011

Я пытаюсь заставить мою демоверсию Apache Lucene работать, и я собираюсь установить путь к классам в этом уроке http://lucene.apache.org/java/2_3_2/demo.html

Я охотился в сети, и вот два решения, которые я нашел для установки CLASSPATH:

CLASSPATH=${CLASSPATH}:/Users/philhunter/Desktop/COM562\ Project/lucene-3.0.3/lucene-core-3.0.3.jar

и

setenv CLASSPATH ${CLASSPATH}:/Users/philhunter/Desktop/COM562\ Project/lucene-3.0.3/lucene-core-3.0.3.jar 

Второй выводит ошибку -bash: setenv: команда не найдена

Первый, похоже, согласился, но когда я попробовал следующий шаг в уроке, я получил ошибку. Следующим шагом было выполнить следующее:

Phil-hunters-MacBook:webapps philhunter$ java org.apache.lucene.demo.IndexFiles /Users/philhunter/Desktop/COM562\ Project/lucene-3.0.3/src

, который дал мне ошибку:

Исключение в потоке "main" java.lang.NoClassDefFoundError: org / apache / lucene / demo / IndexFiles

Это заставляет меня поверить, что мои CLASSPATHS не установлены правильно. Буду ли я прав, предполагая это? Я пробовал другие учебники и демонстрации и вижу, чтобы получить эту же ошибку совсем немного. Я новичок в Lucene и относительно новый в скриптах для Mac и Unix. Кто-нибудь знает, правильно ли я устанавливаю CLASSPATH и является ли это причиной ошибок?

Ответы [ 3 ]

7 голосов
/ 02 февраля 2011

Когда вы устанавливаете переменную окружения, такую ​​как CLASSPATH, то по умолчанию она применяется только к текущему процессу (т.е. самому процессу оболочки) - она ​​не доступна для процесса Java, который вы запускаете в следующей строке.Чтобы сделать его доступным для других процессов, вам необходимо «экспортировать» переменную.В этом случае вы можете использовать что-то вроде:

export CLASSPATH=${CLASSPATH}:/Users/philhunter/Desktop/COM562\ Project/lucene-3.0.3/lucene-core-3.0.3.jar

Это в основном говорит "установите переменную CLASSPATH в ее текущее значение плюс местоположение банки lucene и сделайте новую переменную доступной для любых процессов, запущенных из этогоshell ".

Однако в java обычным способом установки classpath является выполнение его как части самой команды java с использованием параметров -classpath или -cp.В вашем случае это будет выглядеть примерно так:

Phil-hunters-MacBook:webapps philhunter$ java -cp /Users/philhunter/Desktop/COM562\ Project/lucene-3.0.3/lucene-core-3.0.3.jar org.apache.lucene.demo.IndexFiles /Users/philhunter/Desktop/COM562\ Project/lucene-3.0.3/src

Кроме того, ошибка, которую вы видите при использовании строки setenv, заключается в том, что setenv - это команда, используемая в оболочке C для установки переменных среды, но оболочкой Mac по умолчанию (и используемой вами оболочкой) является bash, которая не распознает setenv и сообщает, что не распознает ее, с сообщением об ошибке: -bash: setenv: command not found.

7 голосов
/ 26 января 2013

в терминале типа

$ vim ~/.bash_profile

отредактируйте файл и добавьте одну строку:

export CLASSPATH=${CLASSPATH}:/usr/local/lucene-3.6.2/lucene-core-3.6.2.jar:/usr/local/lucene-3.6.2/contrib/demo/lucene-demo-3.6.2.jar;

не забудьте изменить свой путь.

По-вашему, вы проигрываете, добавляя lucene-demo-3.0.3.jar в ваш путь к классам.

1 голос
/ 02 февраля 2011

Я создаю файл .bash_profile в моем домашнем каталоге и выполняю такие действия, как

export GRAILS_HOME=/usr/share/grails
...
export PATH=${GRAILS_HOME}/bin:${GROOVY_HOME}/bin:/usr/local/mysql-5.1.45-osx10.6-x86_64/bin:${PATH}

, вы можете поработать с этим, чтобы установить путь к классам - эти примеры показывают, как объявить переменную среды и как ее использоватьпеременная в других переменных.

...