确定计算机上安装的JRE版本是否足以满足用户想要运行的应用程序的最佳方法是什么?有没有办法使用java-only的东西呢?我希望该解决方案适用于Windows/Linux/MacOSX - 如果JRE版本太低,则应显示消息.目前,如果我尝试在Java 1.5上运行它(该应用程序是为Java 1.6构建的),我会遇到异常.如果没有通用解决方案,那么在Windows上执行此操作的最佳方法是什么?
你可以使用反射和两个编译器来做到这一点.使用您希望能够运行的最旧的Java版本编译主类.它使用System.getProperty("java.version")
或者其他方式检查版本,然后使用反射加载您的真实主类,如果该检查通过,甚至可能直接加载jar.JRE不应加载在编译时未被外部主类引用的任何类.
您可以考虑使用Java Webstart.即使名称暗示类似于applet,它也是关于独立应用程序的.Webstart是一个启动程序,用于检查JNLP文件(一个简单的XML文件,您可以在其中配置应用程序的下载位置,所需的Java版本和其他一些元数据)并使用正确的JRE启动您的应用程序.如果有更新版本,它甚至会更新应用程序.缺点是,你必须写一个JNLP文件.这是一个例子:
Draw 4 App Sun Microsystems, Inc. A minimalist drawing application along the lines of Illustrator Draw Demo Short Description
第二种可能性是使用发射器程序.一个例子是Apache Commons Launcher.您也可以自己编写一些启动器应用程序,但这通常不值得付出努力.
您也可以考虑使用Commons-Launcher,它允许您设置各种环境设置,或在调用您的应用程序之前执行预检查.
http://commons.apache.org/launcher