编程语言
首页 > 编程语言> > Djava.ext.dirs启动问题

Djava.ext.dirs启动问题

作者:互联网

只要你得代码没问题 遇到以下错 :

  1. Caused by: java.security.NoSuchAlgorithmException: AES KeyGenerator
    not available NoSuchAlgorithmException的错误,
  2. Caused by: java.lang.IllegalStateException: Unable to acquire AES
    algorithm. This is required to function.
  3. 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文件。但如果你手动指定系统属性且忘了把 JAVAH​OME/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