it-swarm.com.de

Wo sollen die externen Gläser aufbewahrt werden?

Ich verwende Eclipse (3.4) und meine Klasse kompiliert ohne Warnung oder Fehler. Mein Projekt verwendet eine externe JAR-Datei.

Wo muss ich diese externe JAR-Datei ablegen, um bei Verwendung dieser Klasse aus einem anderen Projekt (nicht in Eclipse) keinen Java.lang.NoClassDefFoundError Zu erhalten?

Ich könnte das Glas einfach in den Projektordner extrahieren, aber das fühlt sich nicht richtig an.

Bearbeiten: In dieser Frage geht es nicht darum, Gläser in Eclipse zu importieren, sondern sie außerhalb von Eclipse zu verwenden.

46
Burkhard

Wenn Sie Ihrem Eclipse-Projekt eine JAR-Datei hinzufügen möchten, erstellen Sie im Allgemeinen einen 'lib'-Ordner im Projektordner und legen die Datei dort ab. Anschließend müssen Sie Eclipse anweisen, es in Ihren Klassenpfad aufzunehmen, damit der Code in Eclipse kompiliert und ausgeführt wird.

Das zu tun:
- Gehen Sie in die Eigenschaften Ihres Projekts
- Wählen Sie 'Java Build Path' in der linken Spalte
- Wählen Sie die Registerkarte "Bibliotheken" im mittleren Teil des Fensters
- Klicken Sie auf die Schaltfläche JARs hinzufügen. Dadurch erhalten Sie eine Liste Ihrer Projekte in Eclipse. Erweitern Sie Ihr Projekt und den Ordner lib. Ihr JAR wird dort sein.
- Wählen Sie die JAR aus, klicken Sie im Eigenschaftenfenster auf OK und dann erneut auf OK.

Ihr Code wird jetzt kompiliert und ausgeführt.

57
James Camfield

lege es in dein jre/lib/ext Mappe

alles, was über den Klassenweg gesagt wurde, ist wahr, aber dies ist ein beständiger und vernünftiger Ort, an dem er leben kann.

sie können Ihren jre-Ordner anhand der Umgebungsvariablen Java_HOME unter Windows ermitteln.

19
Simon

Es spielt keine Rolle, wo Sie es ablegen, aber Sie müssen Ihr anderes Nicht-Eclipse-Projekt so konfigurieren, dass die externen Jars in dessen Klassenpfad abgelegt werden - oder Sie müssen den Mechanismus des Erweiterungsverzeichnisses verwenden, falls dies erforderlich ist. (Das ist einfacher, aber es ist wohl besser, es explizit zu machen.)

7
Jon Skeet

Simons Antwort scheint die beste zu sein, ist aber jetzt etwas veraltet. Habe dieses Oracle-Dokument gegoogelt Installierte Erweiterungen .

Ab Java 6 können Erweiterungs-JAR-Dateien auch an einem Ort abgelegt werden, der von einer bestimmten JRE unabhängig ist, sodass Erweiterungen von allen auf einem System installierten JREs gemeinsam genutzt werden können.

Dort steht, dass Sie für Windows Ihre Erweiterungen hier platzieren sollten:% SystemRoot%\Sun\Java\lib\ext.

5
user3132194

Sie müssen es nur mit der Option -classpath In einem Ordner referenzieren, der nicht in einem Eclipse-Arbeitsbereich enthalten ist, d. H. Der überhaupt nicht von Eclipse abhängt.

Achtung, Sie können Ihr anderes Projekt nicht mit Java -jar Ausführen, wenn Sie Ihr externes Glas mit der Option -cp Referenzieren ( siehe diese Frage )

1
VonC

Ich lege es in einen neuen Ordner. Dieser Ordner muss im Erstellungspfad enthalten sein. Es spielt keine Rolle, ob es in Eclipse oder draußen ist. Eclipse hat einen projektspezifischen Erstellungspfad und übergibt diesen Pfad an den Javac. Wenn Sie javac außerhalb von Eclipse ausführen möchten, müssen Sie den Erstellungspfad manuell übergeben.

0
guerda

Ich weiß, das ist nicht genau das, wonach Sie fragen, aber haben Sie darüber nachgedacht, Maven zu verwenden? Einige der Plugins wie Assembly können in solchen Situationen hilfreich sein.

0
javamonkey79

Nehmen Sie ein Glas in Eclipse, wie James Camfield geschrieben hat.

Stellen Sie dann beim Erstellen (Ant, Maven, manuell) für die Verteilung sicher, dass die JAR-Datei in Ihrer Anwendungs-JAR- oder War- oder Ear-Datei oder in einer anderen Datei enthalten ist und dass alle Startskripte sie über die Befehlszeile -classpath in den Klassenpfad einschließen Option für Java, wie VonC geschrieben hat.

Machen Sie sich keine Sorgen, wenn Sie die Gläser in den Ordner mit den Java= - Erweiterungen legen. Sie werden es nur vergessen, wenn Sie Ihren Code zur Verwendung an einen Dritten senden, denn sie haben gewonnen habe es nicht an ihrem Ende eingerichtet.

0
JeeBee

Erstellen Sie ein freigegebenes lib-Verzeichnis und platzieren Sie dieses und alle anderen gängigen jars-Dateien, die Sie möglicherweise dort haben. Wenn Sie Maven verwenden, haben Sie es bereits in Form des lokalen Repos.

Erstellen Sie in Eclipse eine Klassenpfadvariable für dieses Verzeichnis und verwenden Sie sie dann, um auf Ihre JAR-Datei in Ihren Projekten zu verweisen. Wenn Sie mehrere Projekte haben, die diese Bedingungen erfüllen, wird dies das Leben erheblich erleichtern. Es macht es auch einfach, den Speicherort des Stammverzeichnisses zu ändern, wenn Sie von einem lokalen Laufwerk zu einem Netzwerk wechseln.

In der externen App fügen Sie diese JAR-Datei auch von ihrem freigegebenen Speicherort im Klassenpfad der Apps ein.

0
Robin