故障现象:
如图登录报错显示403
相应日志报错如下:
2023-12-06 17:37:02.576 ERROR Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exceptionio.jsonwebtoken.SignatureException: Unable to obtain JCA MAC algorithm ‘HmacSHA512’: Algorithm HmacSHA512 not available
而同样的代码我另一台又能正常启动,
根据日志报错是说jdk版本太低啊不支持这个算法HmacSHA512,可实际我搜索jdk8以上就该支持才对。
对比发现,这个是用/usr/local/jdk主目录启动的
另一台不行的是
/bin/java启动的。
虽然/bin/java也是主目录ln -s 过来的,但是实际是没有加载到主目录的那些加密算法的插件
参考链接:https://github.com/jwtk/jjwt/issues/429
https://blog.csdn.net/cyony/article/details/74375251
就是/bin/java这样时加载不到ext的一些依赖。
最终:
对比正常的和不正常的两台机器/etc/profile中的
J
A
V
A
H
O
M
E
变量其实说白了,他妈的就是
/
e
t
c
/
p
r
o
f
i
l
e
的
JAVA_HOME变量 其实说白了,他妈的就是/etc/profile的
JAVAHOME变量其实说白了,他妈的就是/etc/profile的JAVA_HOME变量加载错了,丢
下面贴上我正确的/etc/profile文件内java-home的变量
export JAVA_HOME=/usr/local/jdk1.8.0_311
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
就这两行就可以了,丢卡咩。记住不是openjdk的啊,是这个。具体版本目录根据自己的来。
最后能加载到了。也能登录进去了。丢