简体   繁体   中英

Can't seem to run JavaFX project in Eclipse

I'm on Ubuntu 14.04 64-bit. I installed Oracle-8 for Java and downloaded the e(fx)clipse bundle from http://efxclipse.bestsolution.at/ .

However, now I'm running into this error message:

Exception in Application constructor
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    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(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)

Caused by: java.lang.RuntimeException: Unable to construct Application instance: class ui.project.Main
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:907)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:819)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$176(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$174(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$50(GtkApplication.java:139)
    ... 1 more

Caused by: java.lang.NoClassDefFoundError: com/sun/javafx/Utils
    at org.controlsfx.tools.Platform.getCurrentPlatform(Platform.java:65)
    at org.controlsfx.tools.Platform.<clinit>(Platform.java:41)
    at org.controlsfx.dialog.HeavyweightDialog.<clinit>(HeavyweightDialog.java:72)
    at org.controlsfx.dialog.DialogFactory.createDialog(DialogFactory.java:58)
    at org.controlsfx.dialog.Dialog.<init>(Dialog.java:295)
    at org.controlsfx.dialog.Dialogs.buildDialog(Dialogs.java:1086)
    at org.controlsfx.dialog.Dialogs.showCommandLinks(Dialogs.java:692)
    at ui.project.Main.welcomeWindow(Main.java:175)
    at ui.project.Main.<init>(Main.java:64)
    ... 13 more

Caused by: java.lang.ClassNotFoundException: com.sun.javafx.Utils
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 22 more
Exception running application ui.project.Main

Main 64 calls method welcomeWindow in line 175 which includes this line:

Action response = Dialogs.create()
            .title("Welcome to the Dolphin UI")
            .masthead(null)
            .message("Please select an option to proceed.")
            .showCommandLinks(links.get(3), links);

The problem is that the class com.sun.javafx.Utils was moved to com.sun.javafx.util.Utils package in update 60 of Java 8.

I see that you use ControlsFX in your code. Then, take a new version of ControlsFX solve this problem.

More info: https://bitbucket.org/controlsfx/controlsfx/issues/526/comsunjavafxutils-changes-to

After spending roughly 8 hours on this, using three different operating systems (Ubuntu 32, 64 and Windows 8.1), the issue was with Java. Apparently, any version after 8u40 will not work with this.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM