我手头的一些代码需要JCE无限强度策略文件。我想把这个依赖项加入到Maven的Pom文件中,这样我的团队中的其他开发人员就不必在各自的系统上单独应用它了。
我知道最终部署到的系统需要手动安装JCE文件。这只是一个开发解决方案。
我想把策略文件添加到我们的仓库中,然后让Maven来处理安装,但我很惊讶地发现没有看到其他人这样做(并写博客分享)。
我发现了一个答案,当在Google上搜索Maven依赖项以获取策略JAR时,意识到这是与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);
}
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);
java 1.8.0_102
,但它对我不起作用 :( - Max Pengzip
格式。zip
依赖项安装到公司存储库中。dependency:unpack
目标,在构建过程中将创建的依赖项解压缩到${java.home}/jre/lib/security
,例如在initialize
期间(请参见Unpacking specific artifacts)。