2012-10-11 7 views
6

Voglio installare diversi file JAR, come i dischi JDBC del database su OS X, in modo che le altre applicazioni Java possano trovarli.Dove installare i file JAR su OS X in modo che le altre applicazioni Java possano trovarli?

Dove dovrei metterli? Ho provato ~/Library/Java/Extensions ma non funziona per funzionare.

Dettagli:

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) 

Nota: Non ho il controllo su come l'applicazione è inizializzata, ma io presumo che l'applicazione non incude è propria distribuzione di Java e che inizierà le versioni del sistema operativo installato (quello che è disponibile dalla riga di comando).

Inoltre, non ho alcuna configurazione CLASSPATH, e si ricorda che le variabili di ambiente che sono disponibili per i programmi da linea di comando non sono le stesse di quelle disponibili per applicazioni GUI su OS X.

devo specificare che sto provando questo per la mia macchina di sviluppo e che questo approccio non è un modo di distribuire applicazioni Java.

+0

Non stai utilizzando uno strumento di gestione delle dipendenze? Come gradle, maven o formica/edera? Ciò renderebbe la vita più facile per te. – maba

risposta

1

Devono essere inclusi nel classpath dell'applicazione. Se lo si esegue dalla riga di comando, quindi utilizzare per es. "java -cp ~/Libreria/Java/Estensioni/foo.jar Bar"

D'altra parte, se si utilizza un server di applicazioni come tomcat, è possibile impacchettare il barattolo all'interno della guerra della propria applicazione di posto in una cartella della libreria condivisa del server.

10

Si prega di NON farlo. Ecco perché: le altre app si interromperanno, perché quei file JAR verranno caricati per ogni app Java.

In dettaglio: vendo un'applicazione Java per Mac. Si basa su una versione recente specifica di un file JAR (per JFreeChart). A volte esiste una versione precedente dello stesso file JAR nella cartella Estensioni appropriata. Questo rompe la mia app.

Ma se si vuole veramente fare questo: Secondo Apple's docs:

Biblioteche Extension

software Java su altre piattaforme, spesso si avvale della directory $ JAVA_HOME/lib/ext all'interno un'installazione JDK per memorizzare la classe di supporto o i file jar. Sebbene Java per Mac OS X contenga anche una directory lib/ext , gli sviluppatori non dovrebbero modificarla direttamente per gli stessi motivi sopra indicati, . La directory/Library/Java/Extensions può essere utilizzata per ulteriori file jar o librerie JNI che devono essere posizionate sul classpath di sistema. Per un accesso più controllato, la directory ~/Library/Java/Extensions può essere utilizzata per l'installazione a livello utente delle librerie di supporto. Gli articoli collocati in una di queste directory non devono necessariamente essere denominati nel percorso di classe dell'applicazione e sarà disponibile per tutte le applicazioni eseguite nell'ambito dell'ambito (a livello di sistema o a livello utente, a seconda della directory utilizzata).

0

io sarò secondo i commenti di Steve e inoltre suggerire di utilizzare Maven o Ivy per la gestione delle dipendenze.

La gestione della libreria è per progetto. È molto più facile gestire gli aggiornamenti e le interdipendenze. Maven (non so di Ivy) può dirti quali librerie non sono aggiornate, che sono in conflitto tra loro ecc. Per ogni progetto puoi specificare con precisione le versioni che desideri senza preoccuparti che le modifiche interrompano gli altri progetti.

-3

Ok solo il mio contributo ... ma ho voluto eseguire il mio programma di database piccola nella riga di comando, ma avevo bisogno di mysql-connector-java-5.1.29-bin.jar nel percorso di classe a farlo. Ho passato un po 'di tempo a cercare di capirlo e ho trovato la soluzione. Ho rilasciato il file jar nella cartella Library/Java/Extensions e ho riavviato la mia macchina. Ora quanto sopra dice che dovresti includere il classpath quando stai "eseguendo" il programma (java -cp ~/Library/Java/Extensions/foo.jar Bar), ma non ha funzionato per me. Invece ho dato il comando durante la fase di compilazione e quindi eseguito il mio programma:

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

e questo è quello che ho ottenuto ... interrogare i dati dal mio database:

Connessione al database ...
Creazione dichiarazione ...
ID: 1, Titolo: rappresentante, primo: Nancy, Ultimo: Davolio
ID: 2, Titolo: Vice Presidente, Vendite, primo: Andrew, Ultimo: Fuller ID: 3, Titolo : Rappresentante di vendita, Primo: Janet, Ultimo: Leverling
ID: 4, Titolo: Rappresentante, Primo: Margaret, Ultimo: pavone
ID: 5, Titolo: Sales Manager, Primo: Steven, Ultimo: Buchanan
ID: 6, Titolo: Rappresentante, Primo: Michael , Ultimo: Suyama
ID: 7, Titolo: rappresentante, primo: Robert, Ultimo: re
ID: 8, Titolo: Inside Sales Coordinator, primo: Laura, Ultimo: Callahan
ID: 9, Titolo: vendite Rappresentante, Primo: Anne, Ultimo: Dodsworth

Addio!

Spero che questo aiuti

+0

Questo non spiega dove installare _ un jar e l'esempio con il database è confuso. –

Problemi correlati