0

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?

Abra
  • 19,142
  • 7
  • 29
  • 41
brian
  • 10,619
  • 4
  • 21
  • 79
  • 1
    possible duplicate of [javafx 8 compatibility issues](http://stackoverflow.com/questions/23105433/javafx-8-compatibility-issues) – jewelsea Apr 24 '14 at 08:11

2 Answers2

2

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

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.

brian
  • 10,619
  • 4
  • 21
  • 79