Sichtbarkeit innerhlab einer jar-datei

Orbit

Erfahrenes Mitglied
Moin,
Ich will eine jar Datei basteln, in der es mehrere Packages gibt; in einem Paket soll die Schnittstelle für den user sein;
also es gibt eine einzige Klasse, auf die der Benutzer in der ja zugreifen soll, aber diese datei muss natürlich auf alle anderen klassen auch in den andern paketen in der jar zugreifen können.
Welcvhe Sichtbarkeit müssen alle Klassen haben?
Ich kann eben nur auf Klassen in anderen Paketen zugreifen, wenn die public sind.. kann man das irgenwie umgehen?
Das sind nämlich relativ vciele Klassen, und der benutzer soll nur die eine Verwaltung benutzen/ansprechen können...
mfg,
Orbit
 
Sowas geht am einfachsten, indem du das "Interface" deiner Bibliothek (also alle Klassen bzw. Interfaces die für den Client sichtbar sein sollen) in ein Extra JAR baust, z.B. foobar-api-1.0.jar. Dann gibt es ein weiteres JAR foobar-impl-1.0.jar was die restlichen Klassen beinhaltet. So reicht zur Compilezeit das Vorhandensein des API JARs aus. Zur Laufzeit brauchst natürlich dann beide.

Wirkliche Sichtbarkeitsregeln für ein JAR sind nur mit OSGi möglich, was es ermöglicht, packages für Clients freizugeben bzw. zu verbergen.

Momentan laufen zwei JSR im JCP, die sich mit dem Thema beschäftigen: JSR-291 und JSR-277, wobei dein Anliegen eher in JSR-277 anwendung findet.

Gruß
Ollie
 
Zurück