在mac(m1)上启动mybatis-generator-gui报错及修复

问题一:javaFX

首先遇到的就是javaFX相关包找不到、fxml文件显示异常的问题。之前在windows上,装的是oracle官方jdk。
换了mac之后,装了zulu的jdk,当时是朋友发给我的,就直接安装了。
既然zulu的jdk没有javaFX,那我直接引一个javaFX的maven依赖不就可以了吗?
然后就开始找javaFX的maven依赖,引入之后,代码是不报红了,fxml文件也正常了。
但是启动的时候,却报错了:

无法访问javafx.scene.⌃.Alert

这就尴尬了,包都引入了但是却不能用。
然后就打开了zulu官网,发现官网的zulu有带javaFX的版本。直接下载了一个jdk8带javaFX的版本,安装了。
安装之后果然就可以了,第一个问题解决。

问题二:No native library is found for os.name=Mac and os.arch=aarch64

这个问题是由于mybatis-generator-gui使用了SQLite数据库来保存一些信息,但是通过java连接SQLite的时候却连不上。
报错如下:

java.sql.SQLException: Error opening connection
	at org.sqlite.core.CoreConnection.open(CoreConnection.java:215) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:76) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:24) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:23) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:45) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at org.sqlite.JDBC.createConnection(JDBC.java:114) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at org.sqlite.JDBC.connect(JDBC.java:88) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at java.sql.DriverManager.getConnection(DriverManager.java:664) ~[na:1.8.0_345]
	at java.sql.DriverManager.getConnection(DriverManager.java:270) ~[na:1.8.0_345]
	at com.zzg.mybatis.generator.util.ConnectionManager.getConnection(ConnectionManager.java:21) ~[classes/:na]
	at com.zzg.mybatis.generator.util.ConfigHelper.loadDatabaseConfig(ConfigHelper.java:68) ~[classes/:na]
	at com.zzg.mybatis.generator.controller.MainUIController.loadLeftDBTree(MainUIController.java:240) [classes/:na]
	at com.zzg.mybatis.generator.controller.MainUIController.initialize(MainUIController.java:218) [classes/:na]
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) [jfxrt.jar:na]
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) [jfxrt.jar:na]
	at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) [jfxrt.jar:na]
	at com.zzg.mybatis.generator.MainUI.start(MainUI.java:29) [classes/:na]
	at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:863) [jfxrt.jar:na]
	at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$7(PlatformImpl.java:326) ~[jfxrt.jar:na]
	at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295) ~[jfxrt.jar:na]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_345]
	at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294) ~[jfxrt.jar:na]
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) ~[jfxrt.jar:na]
Caused by: java.lang.Exception: No native library is found for os.name=Mac and os.arch=aarch64
	at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:284) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:65) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at org.sqlite.core.NativeDB.load(NativeDB.java:53) ~[sqlite-jdbc-3.8.11.2.jar:na]
	at org.sqlite.core.CoreConnection.open(CoreConnection.java:211) ~[sqlite-jdbc-3.8.11.2.jar:na]
	... 22 common frames omitted

然后这时候其实也启动了,界面也弹出来了,但是连接数据既查不到也不能保存,保存的时候就会报错:
报错

找遍了网络,有说引入一个依赖的,还有就是说非官方的jdk可能返回的os.name和os.arch不太一样,不一样的话要么换jdk,要么想办法修改这两个参数。
也有一个说是jdbc版本配置的问题。我把所有能配置的地方都改了,依然不管用。
后来发现pom文件里的sqlite-jdbc版本特别低:
版本

于是直接搜了一下maven上sqlite-jdbc最新版本,直接把版本号换了。

<dependency>
  <groupId>org.xerial</groupId>
  <artifactId>sqlite-jdbc</artifactId>
  <version>3.39.3.0</version>
</dependency>

启动,不报错了,第二个问题也解决了。

猜你喜欢

转载自blog.csdn.net/qq_34972627/article/details/127432543