2010-08-06 11 views
19

Algún código que tengo requiere los archivos de la política de fuerza ilimitada de JCE. Me gustaría agregar esta dependencia al archivo Maven Pom para que los otros desarrolladores de mi equipo no tengan que aplicarlo individualmente a sus sistemas.¿Cómo usaría Maven para instalar los archivos de la Política de fuerza ilimitada de JCE?

Me doy cuenta de que los sistemas a los que finalmente se implementarán necesitarán tener los archivos JCE instalados manualmente. Esta es una solución de desarrollo solamente.

Estaba pensando que agregaríamos los archivos de política a nuestro repositorio y maven sería capaz de manejar la instalación, pero estoy sorprendido de que no pueda encontrar a nadie más haciendo esto (y blogueando al respecto).

Respuesta

6

Se podría tal vez intente esto:

  • Bundle (zip?) Los archivos de política de fuerza ilimitada JCE.
  • Instalarlos en su repositorio corporativo como una dependencia zip.
  • Utilice el objetivo dependency:unpack para descomprimir la dependencia creada en ${java.home}/jre/lib/security como parte de su compilación, p. Ej. durante initialize (ver Unpacking specific artifacts).
14

que he encontrado esa respuesta, cuando buscando en Google para las dependencias de Maven para los botes de política y se dio cuenta que se trata de la instalación de JRE específica, fijando así esto como parte de Maven build funcionará sólo para los desarrolladores y sólo cuando se tiene derechos a/jre/lib/carpeta de seguridad. Para mí este truco código funciona mucho mejor (invocar a esto como una de las primeras cosas que su aplicación no):

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

Gracias Bart, este ans salvó mi tiempo. – shashaDenovo

+0

Hola Bart, con la actualización a java1.8 esta solución dejó de funcionar. ¿Conoces un truco similar para Java1.8 también? – shashaDenovo

+0

Hola, estoy usando Java 1.8.0_25 en OSX y todavía funciona. – Marcel

8

Java 8 Seguridad hackear

// 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 Funciona, estoy asombrado. –

+0

Estoy usando 'java 1.8.0_102'. No funciona para mí :( –

Cuestiones relacionadas