【问题标题】:Why is my Java application running incorrectly on Linux and not Windows? [closed]为什么我的 Java 应用程序在 Linux 而不是 Windows 上运行不正确? [关闭]
【发布时间】:2013-01-21 18:29:20
【问题描述】:

有点模糊的问题,但我们开始吧:

我有一个 Java 应用程序,它在 Windows 上执行 100%,但是,当上传到运行 Linux 的服务器时,应用程序仍然运行,只是不正确。我知道这不是文件路径或文件名,但是 Windows 和 linux 之间可能导致应用程序在其中一个或另一个上运行混乱的关键区别是什么?

我不想直接回答我的问题,(因此不发布代码或应用程序正在做什么)我只是对可能导致此类问题的原因更感兴趣并且无法找到列出任何地方。

任何意见将不胜感激!

【问题讨论】:

  • 如果您至少不知道您的应用程序在做什么,那么所说的任何内容都只是猜测。此外,您甚至都不知道它是如何失败的。
  • 我知道您想要一份潜在差异的列表,但我仍然认为您的问题中的一些更具体的内容将帮助您获得更好的列表和更好的答案。就目前而言,没有具体细节,我没有任何东西可以促使我的大脑思考这些差异。
  • UDP 扫描。 Windows 没有对 ICMP 设置速率限制(准确地说是端口不可达消息)。 Linux 可以。我得到球滚动了吗? :p
  • 一般来说,Java 是“一次编写,随处运行”。系统之间的行为不应有所不同,除非操作系统接口有所不同。
  • 线程:与 linux 相比,Thread.sleep() 在 windows (~16ms) 的粒度较低。

标签: java linux windows


【解决方案1】:

文件路径不匹配(即C:\\Users\\ 而不是/tmp)。文件分隔符的差异通常会破坏硬编码而不是动态加载的程序。

另外,任何使用exec() 运行的东西,因为要执行的命令会有所不同。

您的帖子说“我知道这不是文件路径或文件名”,但没有任何类型的代码或示例,这几乎是关键错误。 Java 被设计为独立于平台的,绝大多数代码不受操作系统的影响,因为 JVM 将为该机器生成适当的字节码。

【讨论】:

  • 嗯,我没有想到 exec()。我会调查的。感谢您的意见。
猜你喜欢
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 2017-03-28
相关资源
最近更新 更多