Yishai Asked: 2009-06-18 18:59:15 +0800 CST2009-06-18 18:59:15 +0800 CST 2009-06-18 18:59:15 +0800 CST 在 linux 上部署 java 应用程序需要检查哪些问题? 772 部署在 Windows 上编写和测试的用 Java 编写的服务器应用程序(没有任何特定平台依赖项)时,应特别检查哪些问题。 我知道的两个: 区分大小写的文件名 可用字体 java linux deployment 4 个回答 Voted Best Answer Eddie 2009-06-18T19:03:19+08:002009-06-18T19:03:19+08:00 确保您使用的任何第三方 JAR 文件(例如SWT)具有适当的平台相关版本。虽然您说“没有任何特定的平台依赖性”,但有时可以隐藏特定于平台的行为。 还: 文件路径(你有路径C:\Program Files吗?) 文件路径(您使用“/”或“\”还是使用适当的常量File.pathSeparator?) 如何定位用户的主目录等重要目录? 如果您在端口 1024 以下打开套接字,您会成为 UNIX 中的 root 用户吗? 您会使用 Sun JVM、gcj 还是其他一些 JVM?实现或性能的差异会影响您的应用程序吗? 检查 JVM 发行说明(例如,对于J2SE 5或Java SE 6),以了解您选择的平台上的错误或其他行为差异。 Dave Cheney 2009-06-19T01:46:55+08:002009-06-19T01:46:55+08:00 你几乎肯定会想要设置 -Djava.awt.headless=true 以防任何库尝试进行任何字体渲染、图像处理或任何其他涉及 Swing、AWT 或 ImageIO 的事情 Jeff Costa 2009-06-19T06:23:26+08:002009-06-19T06:23:26+08:00 1) 确保您的 JVM 在两个平台上都是相同的。2) 可能需要某种程度的 JVM 调优。3) 在短时间内启用 JVM 日志记录以确定您是否有任何问题。 Mike Pountney 2009-06-19T04:12:30+08:002009-06-19T04:12:30+08:00 诚然,不是特别针对 Windows 到 Unix,但根据我们的经验值得注意: 检查 $JAVA_HOME/jre/lib/security/java.security 中的设置 - 特别是networkaddress.cache.ttl- Sun JRE 默认情况下将永远缓存 DNS 查找,这曾多次困扰我们和我们的客户。' -Dsun.net.inetaddr.ttl=60' 应该从命令行覆盖它。 确保您使用足够大小的堆运行:-Xmx2048m或类似的(取决于您的应用程序要求)
确保您使用的任何第三方 JAR 文件(例如SWT)具有适当的平台相关版本。虽然您说“没有任何特定的平台依赖性”,但有时可以隐藏特定于平台的行为。
还:
C:\Program Files
吗?)File.pathSeparator
?)你几乎肯定会想要设置
以防任何库尝试进行任何字体渲染、图像处理或任何其他涉及 Swing、AWT 或 ImageIO 的事情
1) 确保您的 JVM 在两个平台上都是相同的。2) 可能需要某种程度的 JVM 调优。3) 在短时间内启用 JVM 日志记录以确定您是否有任何问题。
诚然,不是特别针对 Windows 到 Unix,但根据我们的经验值得注意:
检查 $JAVA_HOME/jre/lib/security/java.security 中的设置 - 特别是
networkaddress.cache.ttl
- Sun JRE 默认情况下将永远缓存 DNS 查找,这曾多次困扰我们和我们的客户。'-Dsun.net.inetaddr.ttl=60
' 应该从命令行覆盖它。确保您使用足够大小的堆运行:
-Xmx2048m
或类似的(取决于您的应用程序要求)