我有问题,需要您的帮助。在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

09-11 20:51