1

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

我已经安装了 – IntelliJ 15 CE – Gluon Plugins 1.0.1。– 苹果开发者中心的成员 – 在 Maven Server 的 Modules and Libraries (IntelliJ) 中设置 mysql-connector-java.5.1.37.bin.jar 并保存在 /Library/Java/Extensions 下

我可以创建简单的 IPA 和 APK 并使用launchIOSDevice / creataIP/android在设备上发送/启动(但我只说简单的 Hello world)

我的问题是,如果我用 TASKS 开始我的代码- > RUN一切正常。我在桌面(OSX)上有一条成功消息,表示连接正常。

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

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

谢谢erkan kaplan

我的 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-connector-java 定义我的“forceLinkClassess”行?

我简单的 javafx 代码:

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)
..........
..........
..........
4

1 回答 1

0

如果你想在 iOS 设备上运行,你的类必须通过forceLinkClasses选项添加,如果你想让 RoboVM链接它们。

这包括你的包中的类,以及你可能使用的任何第三个依赖项上的类。

所以这将起作用:

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

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

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

于 2015-11-08T22:23:01.247 回答