1

OSX上のLAN上のmysqlサーバーに、JDBCを使用して単純なmysql接続コードを書き込もうとしています。

– IntelliJ 15 CE – Gluon Plugins 1.0.1 がインストールされています。– Apple Developer Center のメンバー – Maven Server の Modules and Libraries (IntelliJ) で mysql-connector-java.5.1.37.bin.jar を設定し、/Library/Java/Extensions に保存

簡単な IPA と APK を作成し、launchIOSDevice / createaIP/androidを使用してデバイスで送信/開始できます(ただし、単純な Hello world のみを言うように)

私の問題は、コードをTASKS -> RUNで開始すると、すべて問題ありません.. デスクトップ (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-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 デバイスで実行したい場合、RoboVM にそれらをリンクforceLinkClassesさせたい場合は、オプションを使用してクラスを追加する必要があります。

これには、パッケージのクラスと、使用する可能性のある 3 番目の依存関係のクラスが含まれます。

したがって、これは機能します:

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

古いバージョンの mysql コネクタが必要になる場合があることにも注意してください。

最後に、AlertJavaFXPorts では動作しません。JavaFX 8 ダイアログはまだサポートされていません。

于 2015-11-08T22:23:01.247 に答える