Установка драйвера JDBC для доступа к базе данных Mariadb из Matlab

2

У меня есть база данных Mariadb, работающая на NAS Synology, который я хочу получить от Matlab, установленного на Mac.

Вот шаги, которые я выполнил:

  1. загрузите приложение MariaDB Connector/J 2.3.0 mariadb-java-client-2.3.0.jar
  2. создала папку MyDrivers в папке /Library и переместила туда драйвер
  3. добавила указанную папку в переменную PATH
  4. добавлен полный путь драйвера к переменной CLASSPATH
  5. в соответствии с учебным пособием Matlab, создан файл javaclasspath.txt, который сохраняется в папке prefdir Matlab (/Users/cedric/Library/Application Support/MathWorks/MATLAB/R2018a/javaclasspath.txt). Содержимое файла /Library/MyDrivers/mariadb-java-client-2.3.0.jar - /Library/MyDrivers/mariadb-java-client-2.3.0.jar

Когда я пытаюсь настроить источник данных в Matlab, я получаю сообщение об ошибке "Не удается найти драйвер jdbc на пути Java Java Matlab". Я считаю, что пункты 3, 4 и 5 выполнены правильно (см. выходы ниже).

Поэтому мои вопросы касаются копии/вставки файла.jar драйвера. Есть ли что-то, что мне нужно сделать, чтобы разместить его в соответствующей папке?

Я попытался выполнить его с помощью java -jar/Library/MyDrivers/mariadb-java-client-2.3.0.jar в терминале. Это обеспечивает: no main manifest attribute, in/Library/MyDrivers/mariadb-java-client-2.3.0.jar

Думая, что это может быть не исполняемый банку, я пробовал java -cp/Library/MyDrivers/mariadb-java-client-2.3.0.jar org.mariadb.jdbc.Driver;

Это возвращает

Error: Main method not found in class org.mariadb.jdbc.Driver, please define the main method as: public static void main(String[] args)
or a JavaFX application class must extend     javafx.application.Application'

Любые намеки на то, что делать точно? У меня заканчиваются советы из моих исследований, которые я сделал до сих пор...

Выход env в терминале

TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/48/d95l77ys4hv4xbfgtsh0rh1w0000gn/T/
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.l8pI2zNcXw/Render
TERM_PROGRAM_VERSION=404
OLDPWD=/Users/cedric/.Trash/mariadb-java-client-2.2.6-sources 23.44.30/org/mariadb
TERM_SESSION_ID=396C6E65-006B-4BAF-B137-A270A36E397F
USER=cedric
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.QZhGI9ZjXf/Listeners
PATH=/Library/MyDrivers/mysql-connector-java-8.0.12/mysql-connector-java-8.0.12.jar:/Library/MyDrivers:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PWD=/
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
SHLVL=1
HOME=/Users/cedric
LOGNAME=cedric
CLASSPATH=.:/Library/MyDrivers/mariadb-java-client-2.3.0.jar:
LC_CTYPE=UTF-8
SECURITYSESSIONID=186a8
_=/usr/bin/env

Вывод javaclasspath ('all') в Matlab

Последний файл, который возвращает Matlab, является одним из драйверов: /Library/MyDrivers/mariadb-java-client-2.3.0.jar

Системные характеристики:

Mac OS HighSierra 10.13.4

Matlab R2018a

Java -version: 
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

Драйвер Jdbc MariaDB Connector/J 2.3.0

Теги:
mariadb
jdbc
macos-high-sierra

2 ответа

1

Ваши попытки запустить mariadb jar показывают, что все в порядке. java (правильно) сообщает вам, что этот банку (или класс драйвера) можно рассматривать как точку входа приложения.

Добавление lib в PATH ничего не делает.

добавление lib в CLASSPATH не рекомендуется, но может помочь; единственное, что он делает, это определить путь к классам, который будет использовать java VM, если не указан явный путь к классам. Matlab, как и все сложные приложения Java, определенно имеет свой собственный путь к классам. Я лично не знаком с тем, как работает Matlab, но я бы дал 99% шансов, что Matlab поэтому полностью игнорирует переменную CLASSPATH.

Это оставляет этот файл classpath.txt который, кажется, игнорируется. Я не думаю, что способ настройки classpath в Matlab. Документация по адресу https://www.mathworks.com/help/matlab/ref/javaclasspath.html должна помочь вам. По крайней мере, вы можете спросить Matlab о том, что, по его мнению, относится к классу.

  • 0
    Приятно читать, что вещи на месте на стороне Java и водителя.
  • 0
    Приятно читать, что вещи на месте на стороне Java и водителя. Что касается стороны Matlab, имя файла на самом деле является javaclasspath.txt в соответствии с этой страницей: [ссылка] ch.mathworks.com/help/database/ug/mysql-jdbc-mac.html#bt8lx7a-3 При запуске javaclasspath function ( javaclasspath('all') ), она перечисляет этот каталог среди других: /Library/MyDrivers/mariadb-java-client-2.3.0.jar ; это тот, в котором находится водитель. Таким образом, кажется, что все идет хорошо в этом направлении. Я определенно что-то здесь упускаю, но все еще не знаю, что именно: - /
0

Самая сложная проблема для решения - несуществующая... Благодаря rzwitserloot, который подтвердил, что драйвер был хорошо установлен, я решил пойти шаг за шагом. Сначала настройте крошечную java-программу для тестирования драйвера, которая оказалась действительно эффективной, после настройки пары настроек соединения с базой данных (порт и ip). Затем, несмотря на то, что сообщение MATLAB драйвера не найдено, я сделал то же самое с matlab (вместо использования интерфейса). На самом деле это тоже отлично. После этого я попытался подключиться через интерфейс базы данных, несмотря на сообщение "не удалось найти драйвер". Соединение прошло успешно, и сообщение "не удалось найти драйвер" исчезло.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню