2016-03-20 5 views
1

私は同様の質問を見つけようとしましたが、できませんでした。 JavaFXの実行中に、実行時に特定のクラスButtonBarが見つからないことを示すエラーが表示されます。これは、スタックトレースです:JavaFXクラスが見つかりません:これはJava FXまたは私のコードでエラーですか?

Mar 20, 2016 1:02:35 PM javafx.fxml.FXMLLoader$ValueElement processValue 
WARNING: Loading FXML document with JavaFX API of version 8.0.40 by JavaFX runtime of version 8.0.0 
javafx.fxml.LoadException: 
/C:/Users/kanishk%20tantia/Workspace/AddressApp-Part-1/bin/ch/makery/address/view/PersonOverview.fxml 

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617) 
    at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2864) 
    at javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2708) 
    at javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2677) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2517) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) 
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2409) 
    at ch.makery.address.MainApp.showPersonOverview(MainApp.java:54) 
    at ch.makery.address.MainApp.start(MainApp.java:24) 
    at com.sun.javafx.application.LauncherImpl$8.run(LauncherImpl.java:837) 
    at com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335) 
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301) 
    at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298) 
    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.access$300(WinApplication.java:39) 
    at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: java.lang.ClassNotFoundException: javafx.scene.control.ButtonBar 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2932) 
    at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2921) 
    at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2862) 
    ... 18 more 

FXMLファイルの関連部分: 輸入:

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.control.*?> 
<?import java.lang.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.layout.AnchorPane?> 
<?import javafx.scene.control.ButtonBar?> 

とのButtonBarコード:

<ButtonBar layoutX="54.0" layoutY="250.0" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="10.0"> 
    <buttons> 
     <Button mnemonicParsing="false" text="New..." /> 
     <Button mnemonicParsing="false" text="Edit..." /> 
     <Button mnemonicParsing="false" text="Delete" /> 
    </buttons> 
</ButtonBar> 

答えて

1

にClassNotFoundの例外は、通常のAPIで間違ったバージョン管理を示しています。

WARNING:バージョン8.0.0

のJavaFXのランタイムによって、バージョン8.0.40のJavaFXのAPIを使用してロードFXMLドキュメントあなたはJavaFXの8.0.0を実行しています。しかし、ButtonBarは8.0.40です。

Documentation of ButtonBar

以来: のJavaFX 8u40

+0

JavaFXランタイムを更新/変更するにはどうすればよいですか?私は8u73でなければならないJava 8 JDKを使用しています。なぜJavaFXは8.0.0になっているのですか? –

2

さて、私はそれを得ました。

Javaの複数の競合するバージョンがあり、Eclipseが最新のものを使用していないという問題がありました。以前のバージョンを手動でアンインストールすると、EclipseはJavaFX 8u73を備えたJava 8u73を使用して起動しました。これは、buttonbarクラスがJavaFXクラスの一部であることを意味していました。

したがって、相互互換性は重要です。

+1

古いバージョンをアンインストールする必要はありません。 Eclipseでは、「環境設定」 - >「Java」 - >「インストール済みJRE」に移動し、システムにインストールした最新のものがリストに含まれていることを確認してください。 「追加」をクリックし、そうでない場合はウィザードを実行します。デフォルトの実行環境にしたいものの隣にあるチェックボックスをオンにします。 –

+0

ねえ!そこで、私はInstalled JREを変更しました。私のデフォルトはJDK 8でしたが、これは問題だと思いますが、これは古いバージョンをアンインストールしたときに修正されたようです。私はあなたのソリューションはおそらく正しい方法だと思う。どうもありがとう! –

関連する問題