Ich habe versucht, ein JavaFX-Projekt mit Netbeans und Gradle in ein Android-APK-Dateiformat portieren und zum größten Teil funktioniert es gut! Das Problem, das ich habe, ist mit der WebView-Komponente von Android insbesondere? Ich kann es bekommen, um eine statische Webseite in Android Webview zu zeigen, ohne dass meine App mit einer FATAL EXCEPTION umkippt. Aber wenn ich eine dynamische Webseite in JavaFX Webview mit JavaScript erstellen, scheint Androids Webview überhaupt nicht zu bewältigen?Wie kompatibel ist JavaFX Webview mit Androids Webview?
Eventhough in JavaFX stelle ich JavaScript auf true aktivieren:
googleMapEngine.setJavaScriptEnabled(true);
Wie ich bewusst bin, dass in Android Webview - JavaScript standardmäßig ausgeschaltet ist. Ich kann es nicht in Android funktionieren. Kann Android Webview außerdem den JavaFX-Befehl auflösen?
googleMapEngine.executeScript(String);
Ursache, wenn ich versuche, dies:
googleMapEngine.executeScript(
"var latlng = new google.maps.LatLng(59.438722, 24.745278);" +
"var myOptions = {" +
"zoom: 15," +
"center: latlng," +
"mapTypeId: google.maps.MapTypeId.ROADMAP," +
"mapTypeControl: false," +
"navigationControl: false," +
"streetViewControl: false," +
"backgroundColor: '#666970'," +
"disableDefaultUI: true" +
"};" +
"" +
"var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);");
ich mit dem Fehler in logcat Ende:
I/System.out( 809): [JVDBG] Error firing event
W/System.err( 809): java.lang.ClassNotFoundException: com.sun.webkit.NativeWebView
W/System.err( 809): at java.lang.Class.classForName(Native Method)
W/System.err( 809): at java.lang.Class.forName(Class.java:309)
W/System.err( 809): at com.oracle.dalvik.InternalWebView._fireLoadEvent(InternalWebView.java:347)
W/System.err( 809): at com.oracle.dalvik.InternalWebView.fireLoadEvent(InternalWebView.java:140)
W/System.err( 809): at com.oracle.dalvik.InternalWebView.access$400(InternalWebView.java:43)
W/System.err( 809): at com.oracle.dalvik.InternalWebView$MyJavaScriptInterface.processHTML(InternalWebView.java:363)
W/System.err( 809): at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
W/System.err( 809): at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:39)
W/System.err( 809): at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err( 809): at android.os.Looper.loop(Looper.java:145)
W/System.err( 809): at android.os.HandlerThread.run(HandlerThread.java:61)
W/System.err( 809): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.sun.webkit.NativeWebView" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
W/System.err( 809): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
W/System.err( 809): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
W/System.err( 809): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
W/System.err( 809): ... 11 more
W/System.err( 809): Suppressed: java.lang.ClassNotFoundException: com.sun.webkit.NativeWebView
W/System.err( 809): at java.lang.Class.classForName(Native Method)
W/System.err( 809): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
W/System.err( 809): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
W/System.err( 809): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
W/System.err( 809): ... 12 more
W/System.err( 809): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
E/AndroidRuntime( 809): FATAL EXCEPTION: JavaFX Application Thread
E/AndroidRuntime( 809): Process: com.SundaeThePugApp, PID: 809
E/AndroidRuntime( 809): java.lang.UnsupportedOperationException: Not supported yet.
E/AndroidRuntime( 809): at com.sun.webkit.WebPage.executeScript(WebPage.java:153)
E/AndroidRuntime( 809): at javafx.scene.web.WebEngine.executeScript(WebEngine.java:860)
E/AndroidRuntime( 809): at com.SundaeThePugApp.SundaeThePugController$1.changed(SundaeThePugController.java:202)
E/AndroidRuntime( 809): at com.SundaeThePugApp.SundaeThePugController$1.changed(SundaeThePugController.java:200)
E/AndroidRuntime( 809): at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
E/AndroidRuntime( 809): at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81)
E/AndroidRuntime( 809): at javafx.beans.property.ReadOnlyObjectWrapper$ReadOnlyPropertyImpl.fireValueChangedEvent(ReadOnlyObjectWrapper.java:176)
E/AndroidRuntime( 809): at javafx.beans.property.ReadOnlyObjectWrapper.fireValueChangedEvent(ReadOnlyObjectWrapper.java:142)
E/AndroidRuntime( 809): at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112)
E/AndroidRuntime( 809): at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:146)
E/AndroidRuntime( 809): at javafx.scene.web.WebEngine$LoadWorker.updateState(WebEngine.java:1023)
E/AndroidRuntime( 809): at javafx.scene.web.WebEngine$LoadWorker.dispatchLoadEvent(WebEngine.java:1134)
E/AndroidRuntime( 809): at javafx.scene.web.WebEngine$LoadWorker.access$1000(WebEngine.java:1016)
E/AndroidRuntime( 809): at javafx.scene.web.WebEngine$PageLoadListener.dispatchLoadEvent(WebEngine.java:1003)
E/AndroidRuntime( 809): at com.sun.webkit.WebPage.fireLoadEvent(WebPage.java:251)
E/AndroidRuntime( 809): at com.sun.webkit.NativeWebView$1.run(NativeWebView.java:100)
E/AndroidRuntime( 809): at com.sun.javafx.application.PlatformImpl.lambda$null$155(PlatformImpl.java:295)
E/AndroidRuntime( 809): at com.sun.javafx.application.PlatformImpl.access$lambda$18(PlatformImpl.java)
E/AndroidRuntime( 809): at com.sun.javafx.application.PlatformImpl$$Lambda$19.run(Unknown Source)
E/AndroidRuntime( 809): at java.security.AccessController.doPrivileged(AccessController.java:52)
E/AndroidRuntime( 809): at com.sun.javafx.application.PlatformImpl.lambda$runLater$156(PlatformImpl.java:294)
E/AndroidRuntime( 809): at com.sun.javafx.application.PlatformImpl.access$lambda$5(PlatformImpl.java)
E/AndroidRuntime( 809): at com.sun.javafx.application.PlatformImpl$$Lambda$6.run(Unknown Source)
E/AndroidRuntime( 809): at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
E/AndroidRuntime( 809): at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
E/AndroidRuntime( 809): at java.lang.Thread.run(Thread.java:818)
V/ApplicationPolicy(3468): isApplicationStateBlocked userId 0 pkgname com.SundaeThePugApp
V/ApplicationPolicy(3468): isApplicationStateBlocked userId 0 pkgname com.SundaeThePugApp
V/ApplicationPolicy(3468): isApplicationStateBlocked userId 0 pkgname com.sec.android.app.launcher
Alle erhaltenen Bewertungen werden die meisten begrüßen :)
Java.lang.ClassNotFoundException: com.sun.webkit.NativeWebView Dies bedeutet, dass Sie diese Klasse nicht in Ihrem Projekt befinden, was bedeutet, dass Sie das zugehörige jar importieren müssen. Ich hoffe, dies hilft Ihnen, auf dem richtigen Weg zu sein, da ich nicht sicher bin, was der Rest Ihrer Probleme ist. – XaolingBao