是什么导致某些Java应用程序在某些系统上的运行方式与其他系统不同?

是什么导致某些Java应用程序在某些系统上的运行方式与其他系统不同?,java,compatibility,Java,Compatibility,我收到一些报告,说有人在运行我的Java应用程序时出错,但我没有遇到同样的错误。我很确定这是他们的问题,而不是我代码中的错误。什么会导致一个以其他方式正确构造的Java应用程序不能正常运行?根据我的测试人员的报告,他们似乎安装了最新的Java更新,而且没有一个运行Windows XP。为了验证Java在他们的系统上的配置是否正确,以便Java应用程序能够正常运行,我可以告诉他们怎么做 在我遇到的特定示例中,我为Windows编写了一个GUI应用程序。我的测试人员声称,当他进入“文件”菜单并单击“

我收到一些报告,说有人在运行我的Java应用程序时出错,但我没有遇到同样的错误。我很确定这是他们的问题,而不是我代码中的错误。什么会导致一个以其他方式正确构造的Java应用程序不能正常运行?根据我的测试人员的报告,他们似乎安装了最新的Java更新,而且没有一个运行Windows XP。为了验证Java在他们的系统上的配置是否正确,以便Java应用程序能够正常运行,我可以告诉他们怎么做

在我遇到的特定示例中,我为Windows编写了一个GUI应用程序。我的测试人员声称,当他进入“文件”菜单并单击“打开”时,什么也没有发生。在我这边,会弹出一个JFileChooser窗口,但对于我的测试人员来说,什么都不会发生。我们都在运行64位Windows7操作系统。我已经在测试人员使用的Java更新之前和之后对其进行了测试。我还在另一台计算机上试用了我的应用程序,它在那台计算机上也运行良好。我几乎完全相信这是我用户端的一个错误,因为我似乎无法让同样的问题发生

提前感谢您的回复

是什么导致一个以其他方式正确构造的Java应用程序无法正常运行

这是一个循环问题。唯一可能的答案是循环回答

但一些更常见的事情包括

  • 偶然将特定于平台的假设纳入准则:

    • 假设路径名使用特定的平台语法,则行结束

    • 假设特定于平台的文件系统布局

    • 假设应用程序将以管理员权限运行

    • 假定文本采用特定的字符编码方案

  • 线程问题。编写错误的多线程代码可能在一个平台上正确运行(使用给定的操作系统和硬件配置),而在另一个平台上则不可靠。请注意,Java中基于GUI的应用程序通常是多线程的

  • 与安全有关的问题。在最近的Java版本中,小程序等的处理方式发生了重大(突破性的)变化

基于不同的测试人员报告不同的问题,并且(我猜)错误报告似乎没有意义的事实,我怀疑多线程/同步问题


为了验证Java在他们的系统上的配置是否正确,以便Java应用程序能够正常运行,我可以告诉他们怎么做

Java的安装方式不太可能有问题。特别是当多个测试人员报告问题时


问题最有可能出现在您的应用程序中,并且您假设它是正确构造的。

如果您能更详细地描述您的客户所遇到的错误,那就太好了

在那之前,我敢打赌,客户机的语言环境与您的不同,您的代码不是独立于语言环境的

也许您使用了
String#toLowerCase()
,但现在一切都崩溃了,因为

或者您忽略了
SimpleDateFormat

编辑:


我邀请你摆脱这种信念,对你的代码采取更谦虚的态度

考虑到有很多java版本。步骤1:检查他们正在使用的版本。如果它过时了,发现问题。你在讨论什么样的错误?考虑你的代码不是以跨平台的方式编写的。例如,您是否硬编码了任何
\r\n
?此外,您是否考虑过您的代码实际上可能存在错误?如果您不知道错误的确切原因,如何确保错误不在代码中?您始终需要在开发系统以外的至少一个系统上测试您的应用程序,以声明您的应用程序真正正常工作。
I'm almost entirely convinced that it is an error on my user's end