CLASSPATH на Mac и как Mac выглядит для mysql-connector-java-bin.jar

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

3 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам