Was ist die Beziehung zwischen java.library.path und classpath?

8

Ich suche nach einer einfachen Erklärung der Beziehung zwischen java.library.path und dem Klassenpfad. Obwohl ich kaum ein Neuling bin, musste ich mich nie mit dem j.l.p. Aber wir haben Probleme mit einer WebSphere MQ-Anwendung, an der ich beteiligt bin, und wir möchten ihre Ablaufverfolgung aktivieren. Leider habe ich, nachdem ich IBM gesagt hatte, dass wir die MQ-Jars neu gepackt hätten, damit wir sie über Maven bereitstellen könnten, nicht einmal mit mir über das Problem sprechen, wenn wir die WebSphere MQ-Jars nicht mit java.library.path geladen hätten.

Also, lassen Sie uns unsere gesamte Bereitstellungsstrategie wiederholen. Ich bin damit einverstanden, diese Kugel zu beißen, aber hier ist meine Frage:

Was ist die Beziehung zwischen java.library.path und dem Klassenpfad? Sind Klassen, die auf j.l.p gefunden wurden, für den Compiler sichtbar? Müssen Sie den j.l.p in der Befehlszeile des Compilers angeben? Können Sie diese Klassen sowohl im j.l.p als auch im Klassenpfad angeben? Welches hat Vorrang.

Und bitte bum-rap diese Frage wegen unzureichender Forschung. Ich habe natürlich "java.library.path" gegoogelt. Massen von Treffern natürlich. Ich habe versucht, eine erweiterte Google-Suche zu machen, die den Ausdruck auf die oracle.com-Seite beschränkt. Immer noch Millionen von Treffern. Ich habe versucht, beide Begriffe zu googeln. Holen Sie sich viele Neulinge Erklärungen von zweifelhafter Qualität. Ich habe versucht, die Java-Sprachspezifikation zu suchen. Keine Treffer

Ich möchte eine kurze und verbindliche Erklärung. Kann mich jemand auf eins hinweisen?

UPDATE - IBM besteht darauf, dass ihre MQ-Trace-Einrichtung nicht funktionieren wird, wenn ich meine Anwendung nicht mit -Djava.library.path = {Pfad zu MQ-JARs} lade und sie mich nicht einmal unterstützen trotz eines Servicevertrages, wenn ich es nicht so mache. Und natürlich habe ich Code, der auf diese Klassen verweist und kompilieren muss. Dies ist die Motivation hinter dieser Frage.

    
Steve Cohen 25.07.2014, 20:31
quelle

1 Antwort

10
  

Was ist die Beziehung zwischen java.library.path und dem Klassenpfad?

Keine, das einzige, was sie gemeinsam haben ist, dass sie beide Wege sind.

  

Sind Klassen, die auf j.l.p gefunden wurden, für den Compiler sichtbar?

Nein.

  

müssen Sie die j.l.p in der Befehlszeile des Compilers angeben?

Nie. Sie benötigen dies nur zur Laufzeit.

  

Können Sie diese Klassen sowohl im j.l.p als auch im Klassenpfad angeben?

Fügen Sie nur Klassen zum Klassenpfad hinzu.

Das j.l.p entspricht dem LD_LIBRARY_PATH und teilt der OpenJDK / HotSpot JVM mit, wo freigegebene native Bibliotheken wie .DLL oder .so nicht JARS, nicht Klassen, zu finden sind.

Ссылка

    
Peter Lawrey 25.07.2014 20:37
quelle