UnsatisfiedLinkError when attempting to instantiate a WebView node on Windows Vista

XMLWordPrintable

    • x86
    • windows_vista

      ADDITIONAL SYSTEM INFORMATION :
      Test System: Dell Inspiron 530S (4GB system memory)
      OS: Windows Vista (sp2) x86 (32bit)
      Java: JavaSE JRE 1.8.171 (downloaded from http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html) (Windows 86 offline)


      A DESCRIPTION OF THE PROBLEM :
      When attempting to instantiate a WebView node on a 32 bit OS (Windows Vista in this case) using JRE >= 1.8.171 an UnsatisfiedLinkError exception is thrown. This behavior is not present in the previous JRE release 1.8.162.

      However everything works on JRE versions 1.8.162, 1.8.171, & 1.8.172 on a 64 bit OSs. I've been able to test Windows 7, Linux Mint, OSX 10.11.6 El Capitan)

      It only fails on my one 32 bit OS test system. (My small sample size might be a factor here)

      Even though the test code discretely instantiates the WebView node. This issue was originally detected when the FXMLLoader() couldn't load an FXML file that contained a WebView node. So I'm assuming the method in which the WebView node is instantiated is not apart of the issue.

      REGRESSION : Last worked in version 8u162

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Javac Wvt.java
      Java Wvt

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      F:\ink>java -version
      java version "1.8.0_162"
      Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
      Java HotSpot(TM) Client VM (build 25.162-b12, mixed mode, sharing)

      F:\ink>java Wvt
      hello world
      Mozilla/5.0 (Windows NT 6.0) AppleWebKit/604.1 (KHTML, like Gecko) JavaFX/8.0 Safari/604.1
      ACTUAL -
      F:\ink>java -version
      java version "1.8.0_171"
      Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
      Java HotSpot(TM) Client VM (build 25.171-b11, mixed mode, sharing)

      F:\ink>java Wvt
      hello world
      Exception in Application start method
      java.lang.reflect.InvocationTargetException
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
              at java.lang.reflect.Method.invoke(Unknown Source)
              at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
              at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
              at java.lang.reflect.Method.invoke(Unknown Source)
              at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
      Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
              at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
              at java.lang.Thread.run(Unknown Source)
      Caused by: java.lang.UnsatisfiedLinkError: C:\Program Files\Java\jre1.8.0_171\bin\jfxwebkit.dll: The specified procedure could not be found
              at java.lang.ClassLoader$NativeLibrary.load(Native Method)
              at java.lang.ClassLoader.loadLibrary0(Unknown Source)
              at java.lang.ClassLoader.loadLibrary(Unknown Source)
              at java.lang.Runtime.load0(Unknown Source)
              at java.lang.System.load(Unknown Source)
              at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:201)
              at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:94)
              at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:39)
              at com.sun.webkit.WebPage.lambda$static$39(WebPage.java:131)
              at java.security.AccessController.doPrivileged(Native Method)
              at com.sun.webkit.WebPage.<clinit>(WebPage.java:130)
              at javafx.scene.web.WebEngine.<init>(WebEngine.java:881)
              at javafx.scene.web.WebEngine.<init>(WebEngine.java:868)
              at javafx.scene.web.WebView.<init>(WebView.java:273)
              at Wvt.start(Wvt.java:32)
              at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
              at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
              at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
              at java.security.AccessController.doPrivileged(Native Method)
              at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
              at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
              at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
              at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
              ... 1 more
      Exception running application Wvt

      ---------- BEGIN SOURCE ----------
      /*
       * The smallest working sample code I could create to reproduce the error issue.
       * Wvt = WebView Test
       */
      import javafx.application.Application;
      import javafx.scene.Scene;
      import javafx.scene.layout.BorderPane;
      import javafx.scene.web.WebView;
      import javafx.stage.Stage;

      public class Wvt extends Application {

          public static void main(String[] args) {
            System.out.println("hello world");
            launch(args);
          }

            @Override
            public void start(Stage primaryStage) {
                primaryStage.setTitle("javafx-skeleton");

                BorderPane panel = new BorderPane();
               
                System.out.println(new WebView().getEngine().getUserAgent()); // Error occurs here.

                Scene scene = new Scene(panel, 200, 200);
                primaryStage.setScene(scene);
                primaryStage.show();
            }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      I don't have a workaround at this point other than throwing up an alert when:
      System.getProperty("java.version") > 1.8.162 && System.getProperty("sun.arch.data.model") == 32

      FREQUENCY : always


            Assignee:
            Kevin Rushforth
            Reporter:
            Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: