3
일부 특정 요청 (예 : 매번 프린터를 선택하지 않고 인쇄)에 대한 Java 지원 웹 기반 응용 프로그램을 만들고 있습니다. id가 나를 드라이브하는 미친 것입니다.JavaFX JSObject가 몇 분 후에 작동을 멈 춥니 다?
내가 브라우저 객체와 모든 것이 잘 작동 인스턴스화를위한 자바 FX를 사용하지만, 물론 내가 자바 스크립트에서 자바 콜백을 확인해야합니다, 여기에 코드입니다 :
...
...
we.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>()
{
@Override
public void changed(ObservableValue<? extends State> observable, State oldValue, State newValue)
{
if (newValue == Worker.State.SUCCEEDED)
{
bridge = new Bridge();
JSObject jsobj = (JSObject) we.executeScript("window");
jsobj.setMember("app", new Bridge());
}
if (newValue == Worker.State.CANCELLED)
{
System.out.println(newValue);
System.out.println("An error accourred");
}
}
});
...
...
이 작동하지만 몇 minutesthe 브리지 후 stoo는 전적으로 작동하는데 자바 스크립트는 더 이상 콜백을 할 수 없으며 "app"객체에 경고()를 보내면 정의되지 않은 값을 반환합니다. 저는 JDK9를 사용하고 있습니다
'JSObject'는 전달 된 멤버에 대한 약한 참조 만 보유하고 있습니다. 'Bridge' 인스턴스에 대한 참조를 보유 할 수 있습니까? (마치 당신이 의도 한 것처럼 보이지만'JSObject'를 위해 완전히 새로운 것을 만들었습니다 ...) – Itai
실제로 @sillyfly, 맞아요. 설명 할 수 없게도 나는 Bridge의 새로운 인스턴스를 통과 시켰고, 왜 그런지는 모르지만, javafx는 그런 지역 할당에 대해 조금도 관대하지 않는 것처럼 보입니다. 고마워. –