您需要检查在Linux上部署Java应用程序时遇到什么问题?

部署用Java编写的服务器应用程序(没有任何特定的平台依赖性)时应该特别检查哪些问题,这些应用程序是在Windows上编写和testing的。

我知道的两个:

  1. 区分大小写的文件名
  2. 可用的字体

确保您使用的任何第三方JAR文件(如SWT )具有适当的平台相关版本。 当你说“没有任何特定的平台依赖性”时,特定于平台的行为有时可能被隐藏起来。

也:

  1. 文件path(你有path,如C:\Program Files ?)
  2. 文件path(你使用“/”或“\”还是使用适当的常量File.pathSeparator ?)
  3. 你如何find重要的目录,如用户的主目录?
  4. 如果你打开1024以下的套接字,你会成为UNIX中的root用户吗?
  5. 你会使用Sun JVM,gcj还是其他的JVM? 实施或性能差异是否会影响您的应用程序?
  6. 检查JVM发行说明(例如,针对J2SE 5或Java SE 6 ),以提及您select的平台上的错误或其他行为差异。

你几乎肯定会想要设置

 -Djava.awt.headless=true 

如果任何库尝试进行任何字体渲染,image processing或触及Swing,AWT或ImageIO的其他任何内容

1)确保你的JVM在两个平台上都是相同的。 2)某些级别的JVM调优可能是必要的。 3)在短时间内启用JVM日志logging,以确定是否有任何问题。

不可否认,Windows-to-Unix并不是特定的,但值得注意的是基于我们的经验:

  • 检查$ JAVA_HOME / jre / lib / security / java.security中的设置 – 尤其是networkaddress.cache.ttl – 默认情况下,Sun JRE会永久cachingDNS查找,这会多次使我们和客户端陷入困境。 ' -Dsun.net.inetaddr.ttl=60 '应该从命令行覆盖它。

  • 确保您正在运行一个足够大的堆: -Xmx2048m或类似(根据您的应用程序要求)