簡體   English   中英

使用jdk1.7時運行的Java + JavaFX應用程序,使用jdk1.8時發生錯誤

[英]Java + JavaFX application running when using jdk1.7, errors when using jdk1.8

我一直在嘗試開發一個小的Java應用程序。 我將JavaFX用於GUI。 我正在使用帶有e(fx)clipse插件的eclipse 一切正常。 我使用jdk1.7.0_60作為我在Eclipse中的默認JRE。 我決定要嘗試導出到可運行的.jar文件,以便可以在沒有日食的情況下測試我的應用程序。 這是哪里出錯了。

不久前,我在系統上安裝了jre8和jdk1.8.0_05,以進行測試。 最初我不理解為什么我的應用程序在運行應用程序時為什么總是給出運行時錯誤/異常,但這是因為我的默認Java現在是8。

我將eclipse中的jdk從1.7更改為1.8,並且在eclipse中給出了相同的錯誤/異常,所以我很確定它與我正在運行的jave8有關。 (兩者之間可能結合嗎?)

這是我第一次使用JavaFX,因此可能只是配置錯誤。

我已經嘗試按照此處的說明更改代碼,但仍然無法正常工作。 這是一些屏幕截圖和代碼,以進行更詳細的說明:

Main.java

public class Main extends Application {

public static void main(String[] args) {
    Application.launch(Main.class, args);
}

@Override
public void start(Stage primaryStage) throws Exception {
    /*
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/gui/Launcher.fxml"));
    Parent root = (Parent) fxmlLoader.load();
    LauncherController controller = fxmlLoader.getController();
    controller.setStage(primaryStage);

    primaryStage.setTitle("The Deep Space Code");
    primaryStage.setScene(new Scene(root, 600, 400));
    primaryStage.setResizable(false);
    primaryStage.show();
    */
    Parent root;
    LauncherController controller;

    URL location = LauncherController.class.getResource("/fxml/gui/Launcher.fxml");
    FXMLLoader fxmlLoader = new FXMLLoader();
    fxmlLoader.setLocation(location);
    fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());

    try {
        root = (Parent) fxmlLoader.load(location.openStream());
        controller = (LauncherController) fxmlLoader.getController();
    } catch (IOException ioe) {
        throw new IllegalStateException(ioe);
    }

    primaryStage.setTitle("The Deep Space Code");
    primaryStage.setScene(new Scene(root, 600, 400));
    primaryStage.setResizable(false);
    primaryStage.show();
}



}

LauncherController.java

public class LauncherController {

@FXML
private static WebView WebView;
@FXML
private static ImageView LaunchImage;
@FXML
private static TextField FieldMail;
@FXML
private static PasswordField FieldPassword;
@FXML
private static CheckBox CheckBoxSave;
@FXML
private static Button BtnLogIn;

@FXML
private static Label lblEMail;
@FXML
private static Label lblPassword;
@FXML
private static Label lblWelcome;
@FXML
private static Label lblName;

private final static String website = "http://5.231.59.222/Secret/motd";
private static WebEngine webEngine;
private Stage stage;

private boolean configWrite;
private Config config;

private User user;
private String firstName;
private String lastName;
private String logged;
private long session;

public void setStage(Stage stage) {
    this.stage = stage;
}

public void initialize() {
    configWrite = false;
    webEngine = WebView.getEngine();
    webEngine.load(website);

    Platform.runLater(new Runnable() {
        @Override
        public void run() {
            FieldMail.requestFocus();
        }
    });

    // config GET
    config = ObjectPrinter.readConfig();
    if (config != null) {
        if (!config.getEmail().equals("")) {
            FieldMail.setText(config.getEmail());
            CheckBoxSave.setSelected(true);
            Platform.runLater(new Runnable() {
                @Override
                public void run() {
                    FieldPassword.requestFocus();
                }
            });
        }
    }
}

@FXML
protected void LogInButtonClicked(ActionEvent event) {
    //Removed code since this doens't matter and was 100+ lines long
}

@FXML
protected void SaveCheckBoxChanged(ActionEvent event) {
    configWrite = true;
}
}

Launcher.fxml

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

<?import javafx.scene.text.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.web.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
        <TabPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="400.0" prefWidth="600.0" tabClosingPolicy="UNAVAILABLE" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.LauncherController">
        <tabs>
        <Tab text="Index">
          <content>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
                   <children>
                      <ImageView fx:id="LaunchImage" fitHeight="200.0" fitWidth="200.0" layoutX="400.0" layoutY="1.0" pickOnBounds="true" preserveRatio="true">
                         <image>
                            <Image url="@../../../recources/launcher.png" />
                         </image>
                      </ImageView>
                      <Label fx:id="lblEMail" layoutX="14.0" layoutY="244.0" text="E-Mail" />
                      <Label fx:id="lblPassword" layoutX="14.0" layoutY="281.0" text="Password" />
                      <TextField fx:id="FieldMail" layoutX="85.0" layoutY="240.0" prefColumnCount="16" promptText="E-Mail" />
                      <PasswordField fx:id="FieldPassword" layoutX="85.0" layoutY="277.0" prefColumnCount="16" promptText="Password" />
                      <CheckBox fx:id="CheckBoxSave" layoutX="85.0" layoutY="318.0" mnemonicParsing="false" onAction="#SaveCheckBoxChanged" text="Save E-Mail" />
                      <Button fx:id="BtnLogIn" layoutX="174.0" layoutY="310.0" mnemonicParsing="false" onAction="#LogInButtonClicked" prefHeight="27.0" prefWidth="105.0" text="LogIn" textAlignment="CENTER" textFill="BLUE" wrapText="true">
                         <font>
                            <Font name="Centaur" size="18.0" />
                         </font>
                      </Button>
                      <WebView fx:id="WebView" layoutX="-1.0" prefHeight="200.0" prefWidth="400.0" />
                      <Label fx:id="lblWelcome" layoutX="14.0" layoutY="244.0" text="Welcome to The Deep Space Code" visible="false" />
                      <Label fx:id="lblName" layoutX="14.0" layoutY="281.0" text="Currently logged in as " visible="false" />
                   </children></AnchorPane>
          </content>
        </Tab>
        <Tab text="Info">
          <content>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
          </content>
        </Tab>
      </tabs>
    </TabPane>

http://i.stack.imgur.com/W3eJq.png (圖書館)

錯誤信息:

Exception in Application start method
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:483)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:367)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:305)
    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:483)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:894)
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:56)
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:158)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: javafx.fxml.LoadException: 
/J:/Desktop/Game/Launcher/bin/fxml/gui/Launcher.fxml

    at application.Main.start(Main.java:46)
    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)
    ... 1 more
Caused by: javafx.fxml.LoadException: 
/J:/Desktop/Game/Launcher/bin/fxml/gui/Launcher.fxml

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2587)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)
    at application.Main.start(Main.java:43)
    ... 11 more
Caused by: 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:483)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2582)
    ... 13 more
Caused by: java.lang.NullPointerException
    at application.LauncherController.initialize(LauncherController.java:70)
    ... 23 more
Exception running application application.Main

FXMLLoader似乎不再填充靜態字段-為什么要使用靜態變量呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM