0
votes

I upgraded from JavaFX 8 b109 to b116 and my FXML controller class has the injected variables as null when it initializes. I tried it with the sample NetBeans FXML app.

@FXML
private static Label label;

@Override
public void initialize(URL url, ResourceBundle rb) {
    label.setText("static test");
} 

The problem is with the static keyword. I remove that and it works. It was working fine in b109 with static variables. When writing my app initially, I figured static made sense. They're created when the application loads and there's only ever one copy of the scene.

Is there a way around this without rewriting a thousand lines of code that use static access?

2
possible duplicate of javafx 8 compatibility issues - jewelsea

2 Answers

2
votes

Thank you very much for documenting this issue. Since last night, I try to fix it. Like you I guessed that the injected variables are null and could at finally shape my question to query the web for a solution. I found your entry here.

For this problem I suggest a quick dirty solution, I removed the static keyword from the declaration of original variable name at the same time I declared a static equivalent of it inserting a _ character at the end of the original name. In initialize() I've copied the injected objects into the static counterparts without having to refactor all my static inner classes and methods.

1
votes

Anyway I refactored everything and it wasn't as hard as I thought. I spent about half the time refactoring as I did searching for a solution.

I'll leave the question in case any other poor souls have the same problem.