2012-10-11 4 views
6

Ich möchte verschiedene JAR-Dateien wie JDBC-Datenbank-Laufwerke unter OS X installieren, damit andere Java-Anwendungen sie finden.Wo installieren Sie JAR-Dateien unter OS X, damit andere Java-Anwendungen sie finden?

Wo soll ich sie hinstellen? Ich habe versucht ~/Library/Java/Extensions, aber es funktioniert nicht zu arbeiten.

Details:

OS X 10.8.2 

java version "1.6.0_35" 
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) 
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode) 

Anmerkung: Ich habe keine Kontrolle darüber, wie die Anwendung initialisiert wird, aber ich davon aus, dass die Anwendung incude nicht eine eigene Java-Distribution ist und dass es die OS installierten Versionen starten (dasjenige, das über die Befehlszeile verfügbar ist).

Auch ich keine CLASSPATH eingerichtet haben, und bitte, dass Umgebungsvariablen erinnern, die Kommandozeilen-Programme verfügbar sind, sind nicht die gleichen wie die, die zur Verfügung GUI-Anwendungen auf OS X.

Ich muss angeben dass ich dies für meine Entwicklungsmaschine versuche und dass dieser Ansatz keine Möglichkeit zur Bereitstellung von Java-Anwendungen darstellt.

+0

Sie kein Abhängigkeitsmanagement-Tool verwenden? Wie Gradle, Maven oder Ameise/Efeu? Das würde dir das Leben leichter machen. – maba

Antwort

1

Sie müssen in den Klassenpfad der Anwendung aufgenommen werden. Wenn Sie es über die Befehlszeile ausführen, verwenden Sie z. "java -cp ~/Bibliothek/Java/Erweiterungen/foo.jar Bar"

Auf der anderen Seite, wenn Sie einen Anwendungsserver wie Tomcat verwenden, können Sie entweder das Glas in den Krieg Ihrer Anwendung von Ort es verpacken in einen freigegebenen Bibliotheksordner des Servers.

10

Bitte nicht tun. Hier ist der Grund: Andere Apps werden beschädigt, da diese JAR-Dateien für jede Java-App geladen werden.

Im Detail: Ich verkaufe eine Java-App für Mac. Es basiert auf einer bestimmten aktuellen Version einer JAR-Datei (für JFreeChart). Manchmal befindet sich eine ältere Version derselben JAR-Datei im entsprechenden Ordner für Erweiterungen. Das bricht meine App.

Aber wenn Sie wirklich wollen, dies zu tun: Nach Apple's docs:

Erweiterungsbibliotheken

Java-Software auf anderen Plattformen oft nutzt die $ JAVA_HOME/lib/ext innerhalb eine JDK-Installation zum Speichern von Support-Klassen- oder JAR-Dateien. Während Java für Mac OS X auch ein lib/ext-Verzeichnis enthält, sollten Entwickler es nicht direkt für die gleichen oben genannten Gründe für die ändern. Das Verzeichnis/Library/Java/Extensions kann für zusätzliche JAR-Dateien oder JNI-Bibliotheken verwendet werden, die im Systemklassenpfad platziert werden müssen. Für einen kontrollierten Zugriff kann das Verzeichnis ~/Library/Java/Extensions für die Installation von Support-Bibliotheken auf Benutzerebene verwendet werden. Elemente in einem dieser Verzeichnisse müssen nicht im Klassenpfad einer Anwendung benannt werden, und steht allen Anwendungen zur Verfügung, die unter dem entsprechenden Bereich ausgeführt werden (je nach verwendetem Verzeichnis auf Systemebene oder auf Benutzerebene).

0

Ich werde zweiten Steves Kommentare und weiter vor, dass Sie Maven oder Ivy für Abhängigkeitsmanagement verwenden.

Die Bibliotheksverwaltung ist pro Projekt. Es ist viel einfacher, Updates und Interdependenzen zu verwalten. Maven (ich weiß nicht über Ivy) kann Ihnen sagen, welche Bibliotheken veraltet sind, welche Konflikte miteinander etc. Sie können für jedes Projekt genau die Versionen angeben, die Sie benötigen, ohne sich Gedanken machen zu müssen, ob Änderungen andere Projekte stören.

-3

Ok nur mein Beitrag ... aber ich wollte mein kleines Datenbankprogramm auf der Kommandozeile ausführen, aber ich benötigte mysql-connector-java-5.1.29-bin.jar im Klassenpfad dazu. Ich habe einige Zeit damit verbracht, es herauszufinden und die Lösung gefunden. Ich habe die JAR-Datei im Ordner Library/Java/Extensions abgelegt und meinen Rechner neu gestartet. Jetzt sagt das oben genannte, dass Sie den Klassenpfad einschließen sollten, wenn Sie das Programm "ausführen" (java -cp ~/Library/Java/Extensions/foo.jar Bar), aber es funktionierte nicht für mich. Stattdessen gab ich den Befehl während der Kompilierung und dann mein Programm ausgeführt:

$ javac -cp /Library/Java/Extensions/mysql-connector-java-5.1.29-bin.jar FirstExample.java 
$ java FirstExample 

Und das ist, was ich habe ... Abfrage von Daten aus meiner Datenbank:

zur Datenbank verbinden ...
Erstellen Aussage ...
ID: 1, Titel: Sales Representative, Erstens: Nancy, zuletzt: Davolio
ID: 2, Titel: Vice President, Sales, Erstens: Andrew, zuletzt: Fuller ID: 3, Titel : Handelsvertreter, zuerst: Janet, zuletzt: Leverling
ID: 4, Titel: Sales Representative, Erstens: Margaret, Last: Peacock
ID: 5, Titel: Sales Manager Erstens: Steven, zuletzt: Buchanan
ID: 6, Titel: Sales Representative, Erstens: Michael Last: Suyama
ID: 7, Titel: Sales Representative, Erstens: Robert, zuletzt: König
ID: 8, Titel: Inside Sales Coordinator, Erstens: Laura, Last: Callahan
ID: 9, Titel: Verkauf Vertreter, zuerst: Anne, Last: Dodsworth

Auf Wiedersehen!

hoffe, das hilft

+0

Das erklärt nicht, wo ein jar zu installieren ist und das Beispiel mit der Datenbank ist verwirrend. –

Verwandte Themen