2009-04-02 7 views
16

Estoy usando algunas clases de un archivo JAR y pertenecen a un paquete (com.abc.xyz).¿Pueden las clases del mismo paquete distribuirse en varios archivos Jar?

La clase que escribo también pertenece a ese paquete, pero no podré agrupar mi archivo en ese archivo JAR. ¿Es posible tener clases que pertenecen al mismo paquete distribuidas en varios archivos JAR?

+0

Por cierto, ¿puede describir por qué es necesario hacerlo ? Es una buena práctica mantener todo el paquete dentro de un solo frasco. Sería interesante ver por qué no puedes. –

+0

Tenía que hacer eso (para poder acceder a clases de subclase con acceso "predeterminado" en un Jar que no era mío), y funcionó bien ... – Varkhan

Respuesta

4

No veo por qué no sería posible. Todo lo que importa es que las clases están en el classpath.

16

Por defecto, absolutamente.

Sin embargo, si usted quiere para asegurarse de que las clases de un paquete en particular son solamente cargado de un archivo JAR, puede add that information to the manifest.

7

Es bastante factible a menos que el JAR tenga sealed el paquete.

3

Probablemente no es algo que deba querer hacer. Si está en el mismo paquete, no debe empaquetarse en conjunto (creo que Jigsaw tiene la intención de permitir la división de paquetes entre módulos, pero eso es una olla de pescado diferente).

Se puede bloquear si el paquete está marcado como sellado en el manifiesto. Yo recomendaría marcar los frascos enteros como sellados por supuesto.

También se puede bloquear si hay diferentes firmantes en las clases y las clases son cargadas por el mismo cargador de clases.

Si carga las clases con un cargador de clases diferente, aunque el "espacio de nombres" será el mismo, no obtendrá realmente el acceso al paquete (y parte relevante de la protección).

0

A veces hay que hacerlo si desea ampliar la funcionalidad de las bibliotecas de terceros, pero son sourcve se abre y/o que no tienen fuentes de

Cuestiones relacionadas