Djava.ext.dirs启动问题
作者:互联网
只要你得代码没问题 遇到以下错 :
- Caused by: java.security.NoSuchAlgorithmException: AES KeyGenerator
not available NoSuchAlgorithmException的错误, - Caused by: java.lang.IllegalStateException: Unable to acquire AES
algorithm. This is required to function. - Caused by: org.springframework.beans.BeanInstantiationException:
Failed to instantiate [org.apache.shiro.mgt.SecurityManager]:
Factory method ‘securityManager’ threw exception; nested exception
is java.lang.IllegalStateException: Unable to acquire AES algorithm.
This is required to function.
排除法,没有这个加密方式,这个是jdk 底层的东西 请检查 你得环境
1.jdk 版本太低了, 1.8 就好了
2.是不是启动的时候 环境问题,排查以下 启动命令
我的启动命令 是
java --Djava.ext.dirs=$APP_HOME"/lib/:....
这么简单命令会有问题 ?换了个 -cp(classpath) 就没问题 ,那真相只有一个 –Djava.ext.dirs有问题
查了下资料 抄下说明:-Djava.ext.dirs会覆盖Java本身的ext设置,java.ext.dirs指定的目录由ExtClassLoader加载器加载,如果您的程序没有指定该系统属性,那么该加载器默认加载 J A V A H O M E / j r e / l i b / e x t 目 录 下 的 所 有 j a r 文 件 。 但 如 果 你 手 动 指 定 系 统 属 性 且 忘 了 把 JAVA_HOME/jre/lib/ext目录下的所有jar文件。但如果你手动指定系统属性且忘了把 JAVAHOME/jre/lib/ext目录下的所有jar文件。但如果你手动指定系统属性且忘了把JAVA_HOME/jre/lib/ext路径给加上,那么ExtClassLoader不会去加载$JAVA_HOME/lib/ext下面的jar文件,这意味着你将失去一些功能,例如java自带的加解密算法实现。
解决:
查看下Java的安装路径 :
JAVA_HOME=ls -lrt `which java`|awk '{print $11}'
JAVA_HOME=ls -lrt $JAVA_HOME |awk '{print $11}'
echo "你得Java路径:"JAVA_HOME
java -Djava.ext.dirs=你得加载的目录名:$JAVA_HOME/jre/lib/ext $APP_MAINCLASS
-Djava.ext.dirs=./plugin:$JAVA_HOME/jre/lib/ext。windows分号替代冒号来分隔
标签:dirs,JAVA,lib,Djava,ext,HOME,java 来源: https://blog.csdn.net/weixin_44875761/article/details/113263474