在部署用 Java 编写的(没有任何特定平台依赖性)在 Windows 上编写和测试的服务器应用程序时,应特别检查哪些问题。
我知道的两个:
- 区分大小写的文件名
- 可用字体
答案1
确保您使用的任何第三方 JAR 文件(例如斯瓦西里) 具有适当的平台相关版本。虽然您说“没有任何特定的平台依赖性”,但平台特定的行为有时可能会被隐藏。
还:
- 文件路径(您有这样的路径吗
C:\Program Files
?) - 文件路径(您使用‘/’或‘\’或者您使用适当的常量吗
File.pathSeparator
?) - 如何定位重要目录(例如用户的主目录)?
- 如果您打开端口 1024 以下的套接字,您会成为 UNIX 中的 root 用户吗?
- 您会使用 Sun JVM、gcj 还是其他 JVM?实现或性能上的差异会影响您的应用程序吗?
- 检查 JVM 发行说明(例如适用于 Java SE 5 的或者Java SE 6) 来提及您所选平台上的错误或其他行为差异。
答案2
你几乎肯定会想要设置
-Djava.awt.headless=true
以防任何库尝试进行任何字体渲染、图像处理或任何其他涉及 Swing、AWT 或 ImageIO 的操作
答案3
1) 确保您的 JVM 在两个平台上是相同的。2) 可能需要进行一定程度的 JVM 调整。3) 启用 JVM 短时间日志记录以确定是否存在任何问题。
答案4
不可否认,这并不是特别针对 Windows 到 Unix 的,但根据我们的经验,值得注意:
检查 $JAVA_HOME/jre/lib/security/java.security 中的设置 - 特别是
networkaddress.cache.ttl
- Sun JRE 默认会永久缓存 DNS 查找,这已多次困扰我们和我们的客户。'-Dsun.net.inetaddr.ttl=60
' 应该从命令行覆盖它。确保您正在运行足够大小的堆:
-Xmx2048m
或类似内容(取决于您的应用程序要求)