2009-04-02 1 views
16

Sto usando alcune classi da un file JAR e appartengono a un pacchetto (com.abc.xyz).Le classi dello stesso pacchetto possono essere distribuite su più file Jar?

Anche la classe di scrittura appartiene a quel pacchetto ma non potrò raggruppare il mio file in quel file JAR. È possibile avere classi appartenenti allo stesso pacchetto distribuite su più file JAR?

+0

BTW, puoi descrivere il motivo per cui è necessario fare in modo ? È una buona pratica mantenere l'intero pacchetto all'interno di un singolo barattolo. Sarebbe interessante vedere perché non puoi. –

+0

Ho dovuto farlo (essere in grado di accedere alle classi e sottoclasse con accesso "predefinito" in un Jar che non era mio), e ha funzionato bene ... – Varkhan

risposta

4

Non vedo perché non sarebbe possibile. Tutto ciò che conta è che le classi si trovino nel classpath.

16

Per impostazione predefinita, assolutamente.

Tuttavia, se si vuole per assicurarsi che le classi da un particolare pacchetto sono solo caricato da un file jar, è possibile add that information to the manifest.

7

È abbastanza fattibile a meno che il JAR non abbia il pacchetto sealed.

3

Probabilmente non è qualcosa che dovresti voler fare. Se è nello stesso pacchetto, non dovrebbe essere impacchettato insieme (credo che Jigsaw intenda consentire la suddivisione di pacchetti tra i moduli, ma questo è un diverso tipo di pesce).

Può essere bloccato se entrambi i pacchetti sono contrassegnati come sigillati nel manifest. Consiglierei di contrassegnare i vasetti interi come sigillati naturalmente.

Può anche essere bloccato se ci sono diversi firmatari sulle classi e le classi vengono caricate dallo stesso programma di caricamento classi.

Se si caricano le classi utilizzando un caricatore di classi diverso, anche se lo "spazio dei nomi" sarà lo stesso, in realtà non si otterrà l'accesso al pacchetto (e alla relativa parte di protezione).

0

A volte si hanno a che fare che, se si vuole estendere la funzionalità di librerie di terze parti, ma non sono aperti sourcve e/o non si hanno fonti