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'')
}
}