Ich bin auf der 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 gesprochen, wenn wir die WebSphere MQ-Jars nicht mit java.library.path geladen hätten.Was ist die Beziehung zwischen java.library.path und classpath
So großartig, lassen Sie uns unsere gesamte Bereitstellungsstrategie wiederholen. Ich bin okay mit dieser Kugel 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 für unzureichende 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 einen hinweisen?
UPDATE - IBM besteht darauf, dass ihre MQ Trace-Einrichtung wird nicht funktionieren, wenn ich mit meiner Anwendung laden -Djava.library.path = {Pfad zu MQ Gläser} und sie werden nicht einmal unterstützen mich trotz einer mit Service-Vertrag, es sei denn, ich mache es so. Und natürlich habe ich Code, der auf diese Klassen verweist und kompilieren muss. Dies ist die Motivation hinter dieser Frage.
Danke für den Link, Peter. Ich denke, die MQ-JARs, zumindest einige von ihnen, sind Native-Code (die MQ-Klassen für Java sind ein Wrapper um C), also könnte dies angebracht sein. Und doch führe ich sie seit Jahren ohne Probleme vom Klassenpfad aus, bis ich diese Trace-Einrichtung einschalten muss. –
Sie können ein JAR nicht als native Bibliothek laden, das Betriebssystem wird das nicht unterstützen. Sie können eine native Bibliothek in ein JAR einfügen, aber die einzige Möglichkeit, sie zu laden, besteht darin, sie in das Dateisystem zu extrahieren und dann normalerweise explizit mit System.load() zu laden. Es ist möglich, dass die MQ-Bibliotheken den java.library.path in einer Weise verwenden, für die er nicht vorgesehen war. d. h. eine Bibliothek kann eine Eigenschaft analysieren und verwenden, was immer sie mag. –