tutorial plugin java ios jdbc javafx javafxports

java - plugin - Gluon Sample Project con JDBC no funciona en el dispositivo iOS



gluon plugin (1)

Tengo un código simple con Gluon + JDBC. Puedo conectar este código en un dispositivo Android pero no en Ipad.

mi build.gradle;

buildscript { repositories { jcenter() } dependencies { classpath ''org.javafxports:jfxmobile-plugin:1.0.6'' } } apply plugin: ''org.javafxports.jfxmobile'' repositories { jcenter() } dependencies { compile ''mysql:mysql-connector-java:5.0.2'' iosRuntime ''mysql:mysql-connector-java:5.0.2'' } mainClassName = ''com.mtt8.version15'' jfxmobile { android { manifest = ''src/android/AndroidManifest.xml'' packagingOptions { exclude ''META-INF/INDEX.LIST'' } ios { infoPList = file(''src/ios/Default-Info.plist'') forceLinkClasses = [''com.mtt8.**.*'', ''com.mysql.**.*''] } } }

y aquí está JavaCode:

private static final String serverIP="192.168.3.188"; private static final String DB_DRIVER = "com.mysql.jdbc.Driver"; private static final String DB_CONNECTION = "jdbc:mysql://192.168.3.188:3306/kasse_sql?useUnicode=true&characterEncoding=UTF-8"; private static final String DB_USER = "root"; private static final String DB_PASSWORD = "MYPASSWORD"; public static Connection connection = null; public static Statement statement = null; public static String SQL = null; public static PreparedStatement pst = 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); connection = DriverManager.getConnection("jdbc:mysql://192.168.3.188:3306/kasse_sql?user=root&password=MYPASSWORD&useUnicode=true&characterEncoding=UTF-8"); msg.setText("Connection is OK"); return connection; } catch (SQLException e) { e.printStackTrace(); msg.setText("Dont Connection"); } return connection; }

Como digo, este código funciona con Android pero no en mi Ipad.

Obtengo errores de seguimiento después de ./gradlew launchIOSDevice

java.sql.SQLException: Unsupported character encoding ''Cp1252'' at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910) at com.mysql.jdbc.Buffer.readString(Buffer.java:430) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2823) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:812) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3269) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1182) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2644) at com.mysql.jdbc.Connection.<init>(Connection.java:1531) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(DriverManager.java:179) at java.sql.DriverManager.getConnection(DriverManager.java:144) at com.mtt8.version15.getDBConnection(version15.java:58) at com.mtt8.version15.start(version15.java:32) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) at com.sun.javafx.application.LauncherImpl$$Lambda$9.run(Unknown Source) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl$$Lambda$7.run(Unknown Source) at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) at com.sun.javafx.application.PlatformImpl$$Lambda$19.run(Unknown Source) at java.security.AccessController.doPrivileged(AccessController.java:52) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) at com.sun.javafx.application.PlatformImpl$$Lambda$6.run(Unknown Source) at org.robovm.apple.uikit.UIApplication.main(Native Method) at org.robovm.apple.uikit.UIApplication.main(UIApplication.java:384) at org.javafxports.jfxmobile.ios.BasicLauncher.main(BasicLauncher.java:115) IOSWindowSystemInterface : setSwapInterval unimp setSwapInterval(1) ES2ResourceFactory: Prism - createStockShader: FillPgram_Color.frag ES2ResourceFactory: Prism - createStockShader: Texture_Color.frag ES2ResourceFactory: Prism - createStockShader: Solid_TextureRGB.frag IOSWindowSystemInterface : setSwapInterval unimp setSwapInterval(0)

Lo he intentado con cadenas de conexión diferentes, pero el resultado es el mismo.

¿Puede alguien decirme por qué mi código no funciona en Ipad?

gracias erkan kaplan


Parece que hay un cambio en la codificación utilizada en el conector.

Esta es la última versión que funciona para mí en iOS:

dependencies { compile ''mysql:mysql-connector-java:3.1.12'' }

Para versiones más nuevas (3.1.13+), encuentro la misma excepción que ves:

java.sql.SQLException: Unsupported character encoding ''Cp1252''. at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java)

Finalmente, hay un error tipográfico en su archivo build.gradle :

jfxmobile { android { manifest = ''src/android/AndroidManifest.xml'' packagingOptions { exclude ''META-INF/INDEX.LIST'' } // typo!! iOS should be outside android! ios { infoPList = file(''src/ios/Default-Info.plist'') forceLinkClasses = [''com.mtt8.**.*'', ''com.mysql.**.*''] } }

}

Asegúrese de que así es como establece sus opciones:

jfxmobile { android { manifest = ''src/android/AndroidManifest.xml'' packagingOptions { exclude ''META-INF/INDEX.LIST'' } } ios { forceLinkClasses = [ ''com.gluonhq.**.*'', ''com.mysql.**.*''] infoPList = file(''src/ios/Default-Info.plist'') } }