ago 25 2009

Java 1.6 su Mac OS X

Categoria: Programmazione Javasaverio @ 21:44

imac_javaGiorni fa stavo lavorando su un progetto java riguardante XML ed XQuery, ed ho avuto questo errore:

“Exception in thread “main” java.lang.NoClassDefFoundError: javax/xml/stream/XMLStreamReader”

uso Mac Os X 10.4 aggiornato all’ultima versione di Java supportata da Apple… perché ho questo errore? Quando si ha:
Exception in thread “main” java.lang.NoClassDefFoundError: NomeFile
Probabilmente il file NomeFile.class non viene “visto” da Java. Bisogna verificare se nella directory è contenuto il file NomeFile.class, ma nel mio caso è una classe della JVM (javax.xml.stream.XMLStreamReader)!!!

Il problema è che java 1.5 non ha il package javax.xml.stream.*, ed ho bisogno di fare l’aggiornamento a java 1.6. Per chi ha Mac Os X 10.5 l’aggiornamento di java è molto semplice

per via delle politiche di Apple per la distribuzione delle JVM.

Java 1.6 su Mac OS X 10.5

Per prima cosa verifichiamo la nostra versione di java dal Terminale

saverio$ java -version
java version "1.5.0_13"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05-237)
Java HotSpot(TM) Client VM (build 1.5.0_13-119, mixed mode, sharing)

se abbiamo la versione 1.5.x, allora aggiorniamo il sistema all’ultima versione cliccando sulla mela e poi ‘Aggiornamento software…’, e seguiamo la procedura guidata.

Una volta aggiornato il sistema abbiamo java 1.6 installato nella cartella /System/Library/Frameworks/JavaVM.framework/Versions/1.6/ , ma non è abilitato di default; infatti quando il sistema chiama java fa riferimento al file /usr/bin/java che è un link simbolico alla versione 1.5 di java:

saverio$ ls -la /usr/bin/java
lrwxr-xr-x 1 root wheel 74 Apr 30 08:41 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

Per abilitare java 1.6 cancelliamo (o rinominiamo) il link simbolico con:
sudo rm /usr/bin/java
e ne creiamo uno nuovo che punta alla nuova versione di java:
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands/java /usr/bin/java

Questa procedura funziona solo con sistemi a 64bit. Per quelli a 32bit bisogna seguire la seguente procedura per Mac OS X 10.4

Java 1.6 su Mac OS X 10.4

Installare invece Java 1.6 su Mac OS X 10.4 è leggermente più complicato. Prima di tutto verifichiamo che nel sistema sia installata la versione 1.5

saverio$ java -version
java version "1.5.0_19"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02-306)
Java HotSpot(TM) Client VM (build 1.5.0_19-138, mixed mode, sharing)

La versione 1.6 di java per questa piattaforma è un porting di OpenJDK chiamato SoyLatte. Per installarla:

* Scaricare SoyLatte 1.0.2 per Mac OS X 10.4 (oppure 10.5 se stiamo su Mac OS X 10.5 a 32bit) dal sito http://landonf.bikemonkey.org/static/soylatte/. Per scaricarlo si avrà bisogno delle credenziali username: jrl, e password: I am a Licensee in good standing.
* Unzippare il pacchetto in una directory a scelta (si può anche rinominare la directory soylatte16-1.0.2)
* Aggiungere la directory soylatte16-1.0.2/bin al path di sistema $PATH in modo da dargli precedenza rispetto al path della versione 1.5 di java

Per verificare la nuova installazione digitiamo come consueto il comando java -version, e se tutto è stato fatto bene allora la versione sarà 1.6

Java e Mac OS X

Mac OS X è uno splendido sistema operativo, nettamente superiore rispetto ai suoi concorrenti! Purtroppo ho sempre avuto problemi con le versioni di java supportate da Apple. Se siete dei programmatori java appassionati dei sistemi unix-like, vi consiglio di usare Ubuntu Linux per sviluppare le vostre applicazioni.

Tags: ,

2 Commenti a “Java 1.6 su Mac OS X”

  1. emiliano says:

    ciao…
    scusami .. è quasi tutto chiaro, ma non essendo un programmatore e essendo anche un pò tardo, mi chiedo come si fa a “Aggiungere la directory soylatte16-1.0.2/bin al path di sistema $PATH in modo da dargli precedenza rispetto al path della versione 1.5 di java”.
    Puoi inviarmi gentilmente la procedura che devo seguire ( da terminale presumo ) ?
    mi serve la versione 1.6 altrimenti ho un software che ho istallato e che mi serve che la richiede , altrimenti non parte.
    grazie 10000000

  2. saverio says:

    Ciao Emiliano, bella domanda!!!
    purtroppo sul mio sistema non l’ho fatto perchè sto utilizzando java 1.6 solo mentre laoro con eclipse e basta che configuro la jdk nelle sue preferenze.

    Una volta però l’ho fatto… bisogna modificare un file di preferenze, ma non ricordo quale. E’ uguale a quello di Linux. Può essere ~/.profile , ~/bash.rc , oppure /etc/profile .

    Alla fine del file si dovrebbe scrivere una cosa del genere:

    export $PATH=’/path/della/jdk:$PATH’

    Però non ti assicuro che questa procedura sia buona perchè non l’ho testata. Prova a cercare sul web un’altra procedura. Sarà grosso modo come questa.

    Ciao!!!

Scrivi un commento