java.security.NoSuchAlgorithmException:在jboss上部署时,AES KeyGenerator不可用

时间:2016-12-23 04:44:29

标签: java jsf jboss

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

1 个答案:

答案 0 :(得分:0)

每个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...>

如果您以这种方式指定extension-dir,则还应包含$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