2015-11-05 3 views
1

Я пытаюсь написать простой код соединения mysql с JDBC на моем сервере mysql в своей локальной сети на OSX.JavaFX + Gluon + MySQL + JDBC

i have, - IntelliJ 15 CE - Установлены плагины Gluon 1.0.1. - член яблочного developper центра - Установка MySQL-разъем-java.5.1.37.bin.jar модулей и библиотек (IntelliJ) с Maven сервера и сохраняются в/Library/Java/Extensions

Я могу создать простой IPA и APK и отправить/запуска на устройстве с launchIOSDevice/creataIP/андроида (но, как я говорю только простой Привет мир)

Моя проблема, если я начинаю свой код с ЗАДАЧ -> RUN Everythings является ok .. У меня есть сообщение succes на рабочем столе (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') 
    } 
} 

Как я должен определить свою линию "forceLinkClassess" для MySQL-разъем-Java?

мой простой код 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) 
.......... 
.......... 
.......... 

ответ

0

Если вы хотите работать на IOS устройств, ваши классы должны быть добавлены с помощью опции forceLinkClasses , если вы хотите, чтобы у RoboVM было link.

Это включает классы на вашем пакете и те, которые вы можете использовать в любой третьей зависимости.

Так что это будет работать:

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

Заметим также, что вы may нужно старую версию соединителя MySQL.

И, наконец, Alert не будет работать с JavaFXPorts. Диалоги JavaFX 8 еще не поддерживаются.

+0

Спасибо, Jose, я думаю, что теперь jdbc включен в мой проект, но у меня другая проблема. пожалуйста, посмотрите здесь [ссылка] http://stackoverflow.com/questions/33610529/gluon-sample-proect-with-jdbc-dont-work-on-ios-device [/ link] –