我在追踪此问题的原因时遇到问题。
//check string if valid url
String input = sb.toString();
URLDecoder.decode(input, "UTF-8");
这适用于 Linux 服务器 A - Red Hat Enterprise Linux Server 版本 5.8 (Tikanga):
$ java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
但在 Linux 服务器 B 上无法工作 - Red Hat Enterprise Linux Server 版本 6.2(圣地亚哥):
java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.4) (rhel-1.41.1.10.4.el6-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
谁能建议如何调试?
其他信息:
- 服务器 A 和 B 使用相同的 jar
- 在服务器 A 和 B 上传递相同的 http 请求(当然 IP 除外)
- 尝试使用 jdk 5、6 和 7 重新编译 jar,但服务器 B 仍然无法解析 http 请求。 URLDecoder 返回异常“null”
根据要求,堆栈跟踪:
java.nio.InvalidMarkException
at java.nio.Buffer.reset(Buffer.java:297)
...
at java.lang.Thread.run(Thread.java:679)
最佳答案
使用try-catch并打印错误消息。 (如果您显示错误消息,也许我可以解决问题。) Open JDK和Oracle JDK在整个系统中的操作不是一样的。
并显示输入字符串(编码字符串)。
关于Java URLDecoder,在 Linux 服务器 A 上出现异常,在 Linux 服务器 B 上运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28493741/