CLASSPATH на Mac и как Mac выглядит для mysql-connector-java-bin.jar - PullRequest
3 голосов
/ 24 марта 2010

Есть ли путь к классам по умолчанию в Mac OS X 10.6? Когда я echo $CLASSPATH, ничего не появится. В моем .profile я вижу только установленную переменную PATH. Моя проблема в том, что мой сервлет не может найти подходящий драйвер для подключения к серверу MySQL. Я использую Eclipse, с Glassfish v3 и MAMP для сервера MYSQL.

Ответы [ 3 ]

11 голосов
/ 24 марта 2010

Существует несколько способов получения JAR-файлов для просмотра Java в Mac OS X:

  • Поместите его в / Library / Java / Расширения
  • Создание / редактирование переменной среды CLASSPATH
  • Укажите classpath явно с опцией -cp.

Переменная среды CLASSPATH не установлена ​​по умолчанию, однако вы можете установить ее, если захотите. Имейте в виду, однако, что любые переменные среды, которые вы установили в ~/.profile, вступят в силу только в вашем терминальном сеансе и не будут влиять на приложения GUI. Если вы хотите установить переменные среды так, чтобы они влияли на ваши приложения с графическим интерфейсом, вы можете создать файл с именем ~/.MacOSX/environment.plist, который включает переменные среды. Любые изменения, внесенные в этот файл, вступят в силу при следующем входе в систему.

Как уже отмечалось, размещение JAR-файлов в папке расширений или изменение переменной среды CLASSPATH, как правило, являются плохими идеями, поскольку они могут привести к адской зависимости. Лучший способ состоит в том, чтобы связать ваши JAR-файлы с вашим артефактом и правильно установить метаданные так, чтобы они находились в пути к классу вашего артефакта. Если вы используете Apache Maven2 для создания своего артефакта, вы можете автоматически загрузить его, а также связать любые сторонние зависимости и установить путь к классу, соответствующий вашему артефакту.

5 голосов
/ 24 марта 2010

Do not используйте переменную окружения CLASSPATH. Это проблема переносимости. Вся переменная окружения - ошибка парней из Sun. Это полезно только для начинающих, но, конечно, не в реальном мире. Это только запутает начинающих больше после этого. Кроме того, appservers (и IDE) полностью игнорируют эту переменную среды. не помещайте библиотеки в библиотеку JRE или JDK. Это проблема переносимости. Если вы обновите JRE / JDK или запустите приложение где-то еще, оно больше не будет работать.

В веб-приложениях вы обычно просто удаляете сторонние библиотеки, специфичные для веб-приложений, в Webapp/WEB-INF/lib. Эта папка находится в пути к классам веб-приложения по умолчанию. Если эти библиотеки довольно специфичны для сервера приложений (например, для создания источника данных JNDI, который управляется сервером приложений, требуется драйвер JDBC), их необходимо поместить в Appserver/lib. Эта папка покрыта стандартным путем к серверу приложений. В случае Glassfish вам нужно поместить его более конкретно в специфичную для домена папку /lib, например, glassfish/domains/<domainname>/lib.

1 голос
/ 18 августа 2013

Я много боролся с этим. Попробуйте добавить appserv-rt.jar (находится в каталоге lib Glassfish) к пути сборки вашего проекта. (Я не буду перетаскивать все зависимости, если вы хотите избежать этого, сначала создайте библиотеку с jar, а затем добавьте библиотеку в ваш путь сборки.

...