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, а затем добавьте библиотеку в путь сборки.