我的一些代码需要JCE无限强度策略文件。我想将这个依赖项添加到Maven Pom文件中,这样我团队中的其他开发人员就不必单独将它们应用到他们的系统中。
我意识到最终部署的系统需要手动安装JCE文件。这只是一种开发解决方案。
我在想我们会将策略文件添加到我们的存储库中,maven将能够处理安装,但我很惊讶我找不到其他任何人这样做(以及关于它的博客。)。
答案 0 :(得分:14)
我在Google搜索策略JAR的Maven依赖项时发现了答案,并意识到它的JRE安装是特定的,因此将其作为Maven构建的一部分进行修复将仅适用于开发人员,并且只有在您拥有时才有效对/ jre / lib / security文件夹的权限。对我来说,以下代码hack工作得更好(将其作为应用程序的首要任务之一调用):
try {
Field field = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");
field.setAccessible(true);
field.set(null, java.lang.Boolean.FALSE);
} catch (ClassNotFoundException | NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException ex) {
ex.printStackTrace(System.err);
}
答案 1 :(得分:11)
Java 8安全黑客
// hack for JCE Unlimited Strength
Field field = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, false);
答案 2 :(得分:6)
你可以试试这个:
zip
?)JCE无限强度策略文件。 zip
依赖项安装到公司存储库。dependency:unpack
目标将已创建的依赖项解压缩到${java.home}/jre/lib/security
,作为构建的一部分,例如在initialize
期间(请参阅Unpacking specific artifacts)。