【问题标题】:Installation of JDBC driver to access Mariadb database from Matlab安装 JDBC 驱动程序以从 Matlab 访问 Mariadb 数据库
【发布时间】:2019-02-13 20:05:47
【问题描述】:

我有一个在 Synology NAS 上运行的 Mariadb 数据库,我想从 Mac 上安装的 Matlab 访问它。

以下是我遵循的步骤:

  1. 下载了 MariaDB Connector/J 2.3.0 mariadb-java-client-2.3.0.jar
  2. 在 /Library 文件夹中创建了一个 MyDrivers 文件夹并将驱动程序移到那里
  3. 将上述文件夹添加到 PATH 变量中
  4. 将驱动程序的完整路径添加到 CLASSPATH 变量中
  5. 按照 Matlab 的教程,创建了一个 javaclasspath.txt 文件,该文件保存在 Matlab prefdir 文件夹 (/Users/cedric/Library/Application Support/MathWorks/MATLAB/R2018a/javaclasspath.txt) 中。 javaclasspath.txt文件内容为/Library/MyDrivers/mariadb-java-client-2.3.0.jar

当我尝试在 Matlab 中配置数据源时,我收到一条错误消息“无法在 Matlab Java 类路径上找到 jdbc 驱动程序”。我相信第 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

认为它可能不是一个可执行的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

matlab中javaclasspath('all')的输出

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 连接器/J 2.3.0

【问题讨论】:

    标签: java matlab jdbc mariadb macos-high-sierra


    【解决方案1】:

    您尝试运行 mariadb jar 表明它很好。 java (正确地)告诉您这个 jar(也不是 Driver 类)可以被视为应用程序入口点。

    将 lib 添加到 PATH 不会执行任何操作。

    不建议将库添加到 CLASSPATH,但可以提供帮助;如果没有提供明确的类路径,它唯一要做的就是定义 java VM 将使用的类路径。 Matlab 就像几乎所有复杂的 Java 应用程序一样,肯定有自己的类路径。我个人并不熟悉 matlab 是如何做事的,但我认为 matlab 因此也完全忽略了 CLASSPATH 变量的可能性为 99%。

    剩下的这个classpath.txt 文件似乎被忽略了。我认为这不是在 matlab 中配置类路径的方法。 https://www.mathworks.com/help/matlab/ref/javaclasspath.html 上的文档应该可以帮助您。至少你可以问 matlab 它认为类路径是什么。

    【讨论】:

    • 很高兴看到 Java 和驱动程序方面的事情已经到位。
    • 很高兴看到 Java 和驱动程序端的东西已经到位。对于 Matlab 端,文件名实际上是 javaclasspath.txt,根据此页面:[链接]ch.mathworks.com/help/database/ug/mysql-jdbc-mac.html#bt8lx7a-3 运行 javaclasspath 函数(javaclasspath('all'))时,它会列出此目录等:/Library/MyDrivers/mariadb-java-client-2.3.0.jar;这是司机所在的那个。因此,这方面的事情似乎也运行良好。我肯定在这里遗漏了一些东西,但仍然不知道究竟是什么:-/
    【解决方案2】:

    最难解决的问题是不存在的问题... 感谢 rzwitserloot 确认驱动程序已安装好,我决定一步一步来。在调整了几个数据库连接设置(端口和 ip)之后,首先设置了一个小型 java 程序来测试驱动程序确实很好。然后,尽管找不到驱动程序的 MATLAB 消息,但我对 matlab 做了同样的事情(编码而不是使用接口)。这实际上也很好。 之后,尽管出现“无法找到驱动程序”消息,但我确实尝试通过数据库接口进行连接。连接成功,“找不到驱动程序”消息消失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 2019-06-27
      • 2014-09-11
      • 2013-09-24
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多