Java JAR文件在不同的操作系统上表现不同

时间:2013-11-09 22:43:58

标签: java jar chess

几个月前,我创建了一个计算国际象棋评级的Java应用程序。我只在我的计算机上测试过它,但程序按预期工作。

我只是发现在某些操作系统上,程序无法正常工作。我在Windows 7中添加了错误输出的图片,而这是我Windows 8上的内容。 (球员的评分应该下降,因为他对低评分的反对者只得到1.5 / 5)。似乎该计划不允许玩家的评级下降。

有人能指出正确的方向,为什么程序在这两个版本的Windows之间表现不同?我无法在SO或其他任何地方找到任何解释。

3 个答案:

答案 0 :(得分:2)

我认为最合理的解释是Windows 7版本在字段2:2068中有不同的参数,而Windows 8有2048.

答案 1 :(得分:0)

首先,这里有几件事情不会成为原因。

  • 算法在Windows 7和8上的Java之间的行为不同。如果您使用相同的输入运行相同的(单线程)算法,则输出应该相同。

  • 32位与64位JVM上的算术运算不会发生变化。

那可能是什么?假设它是相同的JAR,那么算法可能不会改变。所以这里有几种可能性。

  • 这可能是不同输入的结果。在不查看算法的情况下,我们不能排除存在某种可能性使其以意外方式对输入敏感的可能性。

  • 如果您的代码中存在竞争条件,您可能会发现程序的某些方面在某些Java平台上无法正常工作......由于CPU速度,内存架构和/或差异线程安排。


这就像你可能得到的那样精确答案......而不是看你的代码。所以我认为你将不得不自己调试

  • 访问显示问题的某台Windows 7计算机。

  • 运行附带调试器的应用程序,以查看在这些条件下是否再次出现问题。如果是,则以正常方式进行调试,以找出算法无效的原因。

  • 如果附加调试器(和设置断点)更改程序的行为方式(即它使问题“消失”)那么你就有证据指出了竞争条件某种。

答案 2 :(得分:0)

对于未来的Google员工,问题不在于Java;这是我的程序正在读取数据的文本文件中的换行问题。出于某种原因,在我的文本文件中分隔值的“\ n”字符没有在Windows 7中显示,但在Windows 8中运行良好。非常奇怪但很高兴它已经修复了!

相关问题