我正在尝试升级现有的构建系统以使用Java 8而不是Java 5/6编译器,但是,我仍然必须生成与Java 5/6兼容的输出.总的来说这是微不足道的(-target 1.6),但是我很难用wsimport生成的代码(使用JDK 8 bin中的版本)这样做.
我正在使用Java HotSpot 64位服务器VM(版本25.20-b23),JDK 1.8.0_20.
从命令行调用wsimport命令以生成代码,并直接从那里打包输出.由于遗留原因,我无法更改此过程(例如使用ant),因此我需要从命令行解决问题.
我运行的是:"wsimport WSDL_FILE"(实际文件没关系)然后在输出中的任何类上运行"javap -verbose CLASS | grep major"来检查版本:它总是出来52.
我已经尝试使用-J参数来wsimport将选项传递给javac编译器,但是以下都没有工作:
wsimport "-J-target 1.6" WSDL (fails with unrecognized option -target 1.6" coming from wsimport)
wsimport "-J-Djavac.target=1.6" WSDL (no effect)
wsimport "-J-Djavac.opt.target=1.6" WSDL (no effect)
Run Code Online (Sandbox Code Playgroud)
据推测,通过该作品传递目标或者应该有效的某些属性设置会有一些变化; 如果它是我正在使用的那个,那么我还没弄明白如何正确传递它.
我正在使用JavaFX中的TableView.我想做的是跟踪对表格的编辑.当用户离开表格时,我想检查是否有任何编辑,如果是,则提示用户询问是否要保存更改.
我有TableView工作,我可以跟踪编辑,我可以确定TableView何时失去焦点(使用focusedProperty更改侦听器).
但问题是,当单击一个单元格进行编辑时,表格的focusedProperty更改侦听器将触发(编辑单元格获得焦点,表格本身会丢失它).我真正想要的是一种方法来判断焦点更改时是否更改为表的子节点(例如列或单元格)或表外的某些内容(在父GUI上选择不同的选项卡).但我不想将侦听器添加到可以单击的每个其他可能节点.
如果我知道如何获得当前关注的项目(还没有看到如何做到这一点),我可以递归调用getParent()并检查TableView是否在该列表中,如果是,我知道它是一个孩子.但我还没有看到一种通用的方法来获取应用程序中当前关注的节点.
迭代表的子节点没有好的通用方法,因为getChildrenUnmodifiable()返回我的Node()类型(我想我可以逐个转换以确定它们是否每个都有更多的子节点),或者我必须转到TableColumns然后来自那里的细胞(并检查每个细胞的图形).
我可能会以递归方式迭代子项,根据需要进行转换,并在此时检查isFocused(),除非有更好的解决方案.但是我希望这里的某个人可以更好地解决这个问题,最好是更通用的解决方案.