Установка драйвера JDBC для доступа к базе данных Mariadb из Matlab - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть база данных 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). Содержимое файла javaclasspath.txt: /Library/MyDrivers/mariadb-java-client-2.3.0.jar

Когда я пытаюсь настроить источник данных в Matlab, я получаю сообщение об ошибке «Невозможно найти драйвер jdbc по пути к классам 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

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

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

0 голосов
/ 09 сентября 2018

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

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

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

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

...