当Java桌面应用程序(可执行JAR)需要特定(或更新)的Java版本/更新时,处理情况的最佳方法是什么,以获得一些NoClassDef异常?
详细信息:我有JavaFX 8桌面应用程序,使用Maven和com.zenjava.javafx-maven-plugin构建到可执行JAR。我正在使用JDK 8u40的新功能。当有人试图用较旧的Java版本运行它时,我想很好地处理情况。
首先,大多数低端方法都是检查
System.getProperty("java.version");
在主要功能的开头,用几个“ifs”解析它是主要的> = 8并更新> = 40,如果没有显示一些弹出而不是app。但在我看来,这似乎是平庸的解决方案。
我想知道有更好的方法吗?我想更多地了解直接代码解决方案,外部库,其他jar启动器或Maven选项。
编辑:其他信息 - 我想避免特定于平台的解决方案
答案 0 :(得分:1)
主要适用的解决方案:只需创建包含JRE 的原生Bunde 。这是调用mvn jfx:native
时的默认设置,因此您不必担心该课程在那里,因为您捆绑了该特定版本。
即main reason why some正在使用该选项。想象一下你需要Java 8的情况,但用户只是使用Java 7等等,它确实会使捆绑更大,但它可以保护你免受这些问题的困扰。
免责声明:我是javafx-maven-plugin的维护者,有example-projects;)但还没有Cookie。