【发布时间】:2012-09-20 22:41:42
【问题描述】:
许多人想知道如何强制他们的程序使用最低版本的 jre,但我希望我的程序只使用 java 6 而不是 java 7(也就是 jre 1.6 的最大值)运行。原因是我的程序需要使用 FTP,而 java 7 有可怕的 FTP 错误。
如果用户安装了 1.7,有没有办法让我的应用程序使用 1.6 轻松运行?
我看过的一些选项是:launch4j
除了可能将整个 jre 与我的程序捆绑在一起之外,我不太确定它是否能解决我的问题。我认为这不是最理想的解决方案。
有人可以帮助我指导我在理论上如何解决/处理这个问题吗?
【问题讨论】:
-
正如this SO post 所指出的,可以通过对 Windows 7 防火墙配置进行特定更改来解决 FTP 错误(这实际上是导致有时归因于 Java 7 的错误的原因)。与强制使用较旧的 java 版本相比,这不是更简单的解决方案吗?
-
@Dmitri:我不想让我的用户更改他们的 Windows 7 防火墙配置。我尝试在我的应用程序中使用此代码,这是一个建议的解决方法: System.setProperty("java.net.preferIPv4Stack" , "true");但是,它似乎不可靠,在某些情况下它可以工作,而在其他情况下则根本不可靠。我想要一些能让我放心的东西,它会起作用,而不是一半。
-
对于用户来说,调整防火墙比安装以前版本的 Java 更容易。你看:如果他们遇到 FTP 的问题,这不是 100% 的麻烦。但是无法运行您的应用程序(提示需要旧版本的 Java)对用户来说是一种非常糟糕的体验。他们可能会决定在此之后根本不运行您的应用程序。
-
@EugeneMayevski'EldoSCorp:我同意你在这里所说的,调整防火墙可能是两害相权取其轻,但我想我更喜欢对用户有良好体验的东西在周围。但我认为我最初的问题得到了回答,从某种意义上说,试图强迫他们使用 1.6 并不是解决问题的方法。