我有问题,需要您的帮助。在jboss上部署项目时出现此错误:
Unexpected exception initializing encryption. No encryption will be performed.: javax.faces.FacesException: java.security.NoSuchAlgorithmException: AES KeyGenerator not available
at com.sun.faces.renderkit.ByteArrayGuard.setupKeyAndMac(ByteArrayGuard.java:232)
at com.sun.faces.renderkit.ByteArrayGuard.<init>(ByteArrayGuard.java:89)
at com.sun.faces.renderkit.ClientSideStateHelper.init(ClientSideStateHelper.java:496)
at com.sun.faces.renderkit.ClientSideStateHelper.<init>
Caused by: java.security.NoSuchAlgorithmException: AES KeyGenerator not available
at javax.crypto.KeyGenerator.<init>(KeyGenerator.java:169)
at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:223)
at com.sun.faces.renderkit.ByteArrayGuard.setupKeyAndMac(ByteArrayGuard.java:226)
... 29 more
最佳答案
Java的每种实现都需要支持一些标准算法,例如AES或DES。这在documentation of KeyGenerator
中说明。因此,您的Java环境设置可能有问题。
在oracle的java实现中,算法类应位于sunjce_provider.jar
中(至少在1.7和1.8版本中),通常位于$JAVA_HOME/jre/lib/ext
下。
一个常见的失败是,当您通过以下方式显式定义extension-dir时,此目录不在您的类路径中
java -Djava.ext.dirs=/my/other/dir <more arguments...>
如果以这种方式指定扩展目录,则还应包括
$JAVA_HOME/jre/lib/ext
(并确保正确设置了JAVA_HOME
):java -Djava.ext.dirs=/my/other/dir:$JAVA_HOME/jre/lib/ext <more arguments...>
在JBoss / Wildfy中,这通常是在配置文件
bin/standalone.conf
中完成的(在旧版本中是bin/run.conf
)。有关Java扩展及其配置的详细信息,请参见here。