JavaFX + Gluon + MySQL + JDBC

JavaFX + Gluon + MySQL + JDBC

我正在尝试用 JDBC 编写一个简单的 mysql 连接代码到我位于 OSX 上的 mysql 服务器。

我有, – IntelliJ 15 CE – 安装了 Gluon 插件 1.0.1。 – 苹果开发者中心成员 – 在 Maven 服务器的模块和库 (IntelliJ) 中设置 mysql-connector-java.5.1.37.bin.jar 并保存在 /Library/Java/Extensions

我可以使用 launchIOSDevice / creataIP/android 在设备上创建简单的 IPA 和 APK 以及 send/start(但正如我所说,只有简单的 Hello world)

我的问题是,如果我使用 TASKS -> 运行 开始我的代码,一切正常。我在桌面上收到一条成功消息(OSX), 连接正常。

但是,如果我尝试将下面的相同代码发送到我的 Ipad,我会收到以下错误。

谁能帮帮我,为什么我不能在我的 ipad 上启动这个简单的代码?

谢谢 埃尔坎·卡普兰

我的build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.0.6'

    }
}

apply plugin: 'org.javafxports.jfxmobile'

repositories {
    jcenter()
}

mainClassName = 'com.gluonapplication.GluonApplication'

jfxmobile {

    android {
        manifest = 'src/android/AndroidManifest.xml'
    }
    ios {
        forceLinkClasses = [ 'com.gluonapplication.**.*']
        infoPList = file('src/ios/Default-Info.plist')
    }
}

我必须如何为 mysql-连接器-java 定义我的 "forceLinkClassess" 线?

我的简单java外汇代码:

private static final String DB_CONNECTION = "jdbc:mysql://192.168.3.188:3306/test_sql";
    private static final String DB_USER = "root";
    private static final String DB_PASSWORD = "myPASSWORT";

    public static Connection connection = null;



    public static Connection getDBConnection (){
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        try {
            connection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD);
            alertMessage("Connection is OK");
            System.out.println("BAglanti ok");
            return  connection;
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("CONNECTION ERROR...");
            alertMessage(e.toString());
        }

    return connection;
    }


    public static void alertMessage(String msg){
        Alert alert = new Alert(Alert.AlertType.INFORMATION);
        alert.setTitle("Information");
        alert.setHeaderText("Information");
        alert.setContentText("Ergebnis : " + msg );
        alert.showAndWait();
    }

错误日志:

[WARN] java.lang.Class: Class.forName() failed to load ‘com.mysql.jdbc.Driver’. Use the -forcelinkclasses command line option or add <forceLinkClasses><pattern>com.mysql.jdbc.Driver</pattern></forceLinkClasses> to your robovm.xml file to link it in.
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.lang.VMClassLoader.findClassInClasspathForLoader(Native Method)
..........
..........
..........

如果你想 运行 在 iOS 设备上,你的 类 必须添加 forceLinkClasses 选项,如果你想让 RoboVM link 他们

这包括您的软件包中的 类,以及您可能使用的任何第三方依赖项中的那些。

所以这会起作用:

jfxmobile {
    ios {
        forceLinkClasses = [ 'com.gluonapplication.**.*', 'com.mysql.**.*']
        infoPList = file('src/ios/Default-Info.plist')
    }
}

另请注意,您 需要旧版本的 mysql 连接器。

最后,Alert 不适用于 JavaFXPorts。尚不支持 JavaFX 8 对话框。