gpt4 book ai didi

netbeans 之外的 java hashmap 空指针

转载 作者:行者123 更新时间:2023-11-29 09:31:12 25 4
gpt4 key购买 nike

我在 netbeans 中有以下代码(在同一个项目中使用 javafx):

public class ExperimentControler {
public static HashMap<String,Double> userInput = null;
public static ObservableMapWrapper<String,Double> userInputObservable = null;
}

static final String totalDistance = "Total distance";
public static void main(String[] args) {
ExperimentControler.userInput = new HashMap<String,Double>();
ExperimentControler.userInput.put(totalDistance, 300.0);
ExperimentControler.userInputObservable = new ObservableMapWrapper<String,Double>(ExperimentControler.userInput);

Application.launch(PhysicsGui.class, args);
}

@Override
public void start(Stage primaryStage) {
ExperimentControler.userInput.get(totalDistance);
//...
}

这在 netbeans 中运行得很好。
如果我“清理并构建”项目,生成的 .jar 文件会在这一行抛出空指针异常:

ExperimentControler.userInput.get(totalDistance);

此外,这是我在 netbeans 之外的 java 版本:

>java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)

我也试过 jre 1.7.0 但结果完全一样..
在 netbeans 中我有 jdk 1.6.0_26。

最佳答案

好的...感谢 Kal 的评论:

How are you running this program? Have you tried putting System.out.printlns() in your main method to make sure that they are called before the app crashes with a NPE?

我发现以下 (javafx) 代码(一定是这个..没有其他入口点):

@Override
public void start(Stage primaryStage) {

当我独立运行它时绕过 main()。也许根本原因完全不同我不知道..
事实是,在 netbeans 中,main() 正在运行,而在独立平台上则没有..
我还检查了 jar 的 list ,主类是正确的。 (以防万一)

我无法想到 main 根本没有运行的事实!
因此,我将 main() 中的代码移到了重写的启动方法中,它起作用了。

规范说 start() 方法是 javafx 应用程序的主要入口点。但是,根据我的理解,main() 仍应在 start() 之前调用。这可能是 javafx 上的错误。

关于netbeans 之外的 java hashmap 空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7003332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com