A Java Novice
A Java Novice

Reputation:

Can classes of same package spread across multiple Jar files?

I am using some classes from a JAR file and they belong to a package (com.abc.xyz).

The class am writing also belongs to that package but I won't be able to bundle my file into that JAR file. Is it possible to have classes that belong to the same package spread across multiple JAR files?

Upvotes: 19

Views: 13967

Answers (5)

shuron
shuron

Reputation:

Sometimes you have to do that if you want to extend the functionality of third party libraries but they are not open sourcve and/or you don't have sources

Upvotes: 0

Tom Hawtin - tackline
Tom Hawtin - tackline

Reputation: 147164

It's probably not something that you should want to do. If it's in the same package, should it not be packaged together (I believe Jigsaw intends to allow splitting packages between modules, but that's a different kettle of fish).

It can be blocked if either package is marked sealed in the manifest. I would recommend marking whole jars as sealed as a matter of course.

It can also be blocked if there are different signers on the classes and the classes are loaded by the same class loader.

If you load classes using a different class loader, although the "namespace" will be the same, you won't actually get package (and relevant part of protected) access.

Upvotes: 4

gustafc
gustafc

Reputation: 28895

It is quite doable unless the JAR has sealed the package.

Upvotes: 8

Jon Skeet
Jon Skeet

Reputation: 1503280

By default, absolutely.

However, if you want to make sure that classes from a particular package are only loaded from one jar file, you can add that information to the manifest.

Upvotes: 18

John Topley
John Topley

Reputation: 115402

I don't see why it wouldn't be possible. All that matters is that the classes are in the classpath.

Upvotes: 4

Related Questions