2010-08-06 98 views
19

我有一些代碼需要JCE無限強度策略文件。我想將這個依賴添加到Maven Pom文件中,這樣我團隊中的其他開發人員就不必單獨將它們應用到他們的系統中。我將如何使用Maven安裝JCE Unlimited Strength策略文件?

我意識到這個最終部署到的系統需要手動安裝JCE文件。這只是一個開發解決方案。

我在想,我們會將策略文件添加到我們的存儲庫,maven將能夠處理安裝,但我很驚訝,我找不到任何其他人這樣做(和博客關於它)。

回答

6

也許你可以試試這個:

  • 包(zip?)的JCE無限制強度的政策文件。
  • 將它們作爲zip依賴項安裝到您的公司存儲庫。
  • 使用dependency:unpack目標作爲構建的一部分將創建的依賴關係解壓到${java.home}/jre/lib/security,例如,在initialize期間(見Unpacking specific artifacts)。
14

我發現這個問題的答案,google搜索Maven依賴於政策的JAR文件時,意識到這是JRE安裝特定的,因此,解決這個作爲Maven構建的一部分,將只對開發者和只有當你有權利/ jre/lib /安全文件夾。對我來說,下面的代碼黑客的效果要好得多(調用此爲您的應用程序所做的最重要的東西之一):

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); 
    } 
+0

感謝巴特,這個答案救了我的時間。 – shashaDenovo 2015-11-05 03:42:14

+0

嗨巴特,與更新到java1.8此解決方案停止工作。你是否也知道Java1.8的類似技巧? – shashaDenovo 2015-12-09 06:45:04

+0

嗨,我在OSX上使用Java 1.8.0_25,它仍然有效。 – Marcel 2016-04-05 13:26:08

8

的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); 
+0

= 0它的作品,我很驚訝。 – 2017-02-08 14:38:10

+0

我正在使用'java 1.8.0_102'。它不適用於我:( – 2017-08-25 10:01:04

相關問題