2017-12-19 31 views
0

Java 8でControlsFX 8.40.14で書かれたアプリケーションがあります。CcontrolsFXのJavaでのSpreadsheetViewの使用9

Java 9(正確にはjdk-9.0.1)でアプリを実行していますが、アプリがSpreadsheetViewコンポーネントを表示しようとすると次の例外が発生します。

Exception in thread "JavaFX Application Thread" java.lang.NoSuchMethodError: javafx.scene.control.TableColumn.impl_setReorderable(Z)V 
    at org.controlsfx.control.spreadsheet.SpreadsheetView.getTableColumn(SpreadsheetView.java:2216) 
    at org.controlsfx.control.spreadsheet.SpreadsheetView.setGrid(SpreadsheetView.java:1162) 
    at org.controlsfx.control.spreadsheet.SpreadsheetView.<init>(SpreadsheetView.java:563) 
    at org.controlsfx.control.spreadsheet.SpreadsheetView.<init>(SpreadsheetView.java:475) 
    (...)javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) 
    at javafx.base/javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.graphics/javafx.scene.Scene$ClickGenerator.postProcess(Scene.java:3589) 
    at javafx.graphics/javafx.scene.Scene$ClickGenerator.access$8300(Scene.java:3517) 
    at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3885) 
    at javafx.graphics/javafx.scene.Scene$MouseHandler.access$1300(Scene.java:3604) 
    at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1874) 
    at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2613) 
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:397) 
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:295) 
    at java.base/java.security.AccessController.doPrivileged(Native Method) 
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:434) 
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) 
    at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:433) 
    at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556) 
    at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942) 
    at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175) 
    at java.base/java.lang.Thread.run(Thread.java:844) 

アプリは、私はまだ彼らdon't support SpreadsheetViewとしてControlsFX 9.0.0に移行することはできませんjdk1.8.144およびJDK-9.0.1

してコンパイルされたときに同じ例外が発生します。

どのようにJava 9でこのようなアプリケーションを実行するか考えてみませんか?

+0

JDK 8使用

Java 9のsetReorderable()で公開されていて、もはやimpl_setReorderable()と呼ばれていないので、どちらかをru nをJDK 8に、またはControlsFX 9にアップグレードする –

+1

SpreadsheetViewをJDK9に移行するのに少し時間がかかることをお知らせします。 SpreadsheetViewの多くの機能はJDK9から削除されており、これらを回避する方法はわかりません。したがって、JDK9では動作しません。 – Maxoudela

答えて

0

エラーの最初の行を見て:私は、内部および文書化されていない方法である疑いがTableColumn.imp_setReorderable()方法は

Exception in thread "JavaFX Application Thread" java.lang.NoSuchMethodError: javafx.scene.control.TableColumn.impl_setReorderable(Z)V 

?おそらく、使用しているJDKで削除されている可能性があります(1.8.144)。

ControlsFXのマニフェストから、バージョン8.40.14がJDK1.8.0_131でビルドされていることがわかりました。

JDK 1.8.0_131を入手して、そのアプリケーションを実行してみてください。

+0

私はまた、TableColumn.imp_setReorderable()メソッドが内部で文書化されていないメソッドであり、変更/削除されたがJava 9であると思われます。私はまだJava 9の下でアプリケーションを実行することはできませんので、ControlsFXが変更に追従するように調整されるまで待つ必要があると思います。 – user1053510

+0

これを確認するためにjdk 1.8.0_131を試しましたか? – Kerry

+0

私は1.8.0_131でチェックする点は何も分かりません。 アプリは** 1.8.0_144で動作します(コンパイルして実行します)。1.8.0_131で動作するものはわかりません。この問題は、9.0.1で動作している場合にのみ発生します(JDK 9またはJDK 8でコンパイルしても問題ありません) – user1053510

0

これは遅いかもしれませんが、いくつかの理由のためにcontrolsfxコンポーネントの多くがJDK 9上で動作しません。多くのcontrolsfxコンポーネントがJDK 9と互換性がなく、バージョン9がリリースされてJDK 8から9 ,,,しかし、SpreadSheetViewが除去された...

チェックこの問題:https://bitbucket.org/controlsfx/controlsfx/issues/780/controlsfx-should-support-java-9ケリーが言ったように、私はここでの問題は、APIが実際に変更されていることであると信じていimpl_setReorderable

関連する問題