一个 HBase 无法写入的奇怪问题
问题现象
本地环境测试可以正常写入 HBase,但是打包部署到测试环境上之后,HBase 就写入失败了,并且报错 java.lang.reflect.invocationtargetexception。
问题分析
将测试环境的 yml 拿到本地,Debug 模式启动应用,发现可以写入 HBase。
这就很奇怪了,完全想不通,一点也没有头绪。
本着死马当活马医,将测试和本地的日志进行对比,当我对比到快结束的时候:
发现两者的 JDK 版本不一致,测试环境的是 JDK 11,而本地的是 JDK 8,觉得可能是这个原因。
下面进行验证,点击 Application 右边的下拉,选择「Edit Configuration」:
将运行时 JDK 版本修改为 java 11,点击「OK」进行保存:
重新进行测试,果然报了一样的错误。
问题原因
测试环境的 JDK 与本地环境的 JDK 不一致,后面深入分析了下是因为 JDK 8 与 JDK 11 的反射机制存在差异,导致报错 java.lang.reflect.invocationtargetexception。
解决方法
将本地的 JDK 8 文件夹拷贝的服务器,使用命令 "D:\Program Files\jdk-8\bin\java.exe" -jar analysis-1.1.0.jar
启动应用。
本文作者:ageovb
本文链接:https://www.cnblogs.com/ageovb/p/16211288.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步