Visualizzazione post con etichetta MyEclipse. Mostra tutti i post
Visualizzazione post con etichetta MyEclipse. Mostra tutti i post

10 dicembre 2008

Assert in Java : cosa sono e come configurare Eclipse o MyEclipse per poterle utilizzare

Mi è capitato in questi giorni di aver a che fare con CheckStyle, un progetto openSource che ho scaricato da sourceForge ed ho importato come Java Project nel mio Eclipse.
Mi sono ritrovato davanti ad una serie di errori provocati da alcune istruzioni del tipo assert line != null; la cui sintassi mi era del tutto sconosciuta.
Non ero l'unico a cui era sconosciuta... anche il mio Eclipse segnava tutte le occorrenza di questa keyword con un errore.

Cosa sono le assert?
Le assert sono istruzioni che verificano la verità di una condizione booleana, e provocano la terminazione del programma (mediante il lancio di un AssertionError) nel caso in cui tale condizione risulti falsa. Ad esempio l'istruzione:
assert a + b > 0;

provocherà la terminazione del programma qualora la somma dei valori a e b sia uguale o inferiore a zero. In prima istanza, la semantica dell'assert si riconduce ad una forma compatta per espressioni del tipo:
if(!(a+b>0))
throw new AssertException();

Da un punto di vista tecnico, il costrutto delle assert prevede la possibilità di disabilitare in blocco il controllo delle condizioni: come vedremo più avanti, le assert vengono usate essenzialmente in fase di test e debugging: durante la normale esecuzione, è possibile disabilitarle, eliminando in tal modo l'overhead legato alla loro gestione. Ma esiste anche una differenza assai sottile sul piano filosofico, che rende l'assert un qualcosa di completamente diverso da qualunque altro costrutto presente in Java. Contrariamente a quanto avviene con i costrutti standard dei linguaggi imperativi, una assert non rappresenta un ordine, ma un punto di vista: essa indica una condizione che il programmatore ritiene debba essere vera in un determinato momento dell'esecuzione di un programma. La violazione di tale condizione causerà la terminazione del programma, dal momento che si è verificato qualcosa che il programmatore non aveva previsto. Mai e in nessun caso una assert potrà contenere direttive che influenzino la normale esecuzione del programma.

Come configurare Eclipse o MyEclipse per compilare le assert
Nella versione 3.1 o successive di Eclipse (Per MyEclipse dalla versione 6.0), è necessario accedere al menù Window -> Preferences -> Java -> Compiler e settare per quanto riguarda il gruppo JDK Compliance il Compiler Compliance Level su 1.4 o 5.0 in base alla versione desiderata e selezionare le seguenti voci :

Compiler Compliance Level: 1.4 (o 5.0)
Use default compliance settings : non Selezionata
Generated .class files compatibility: 1.4 (o 5.0)
Source compatibility: 1.4 (o 5.0)
Disallow identifiers called 'assert': Error
.....

In questo modo eclipse dopo aver eseguito il rebuild del progetto riconoscerà tali costrutti e vi permetterà di utilizzarli e compilarli.

16 ottobre 2008

Problema di Out Of Memory di Eclipse o MyEclipse su Mac OS X

Recentemente ho avuto un problema di Out of Memory con MyEclipse 6.0 su Mac OS X.
Così come su altre piattaforme e con altre versioni di Eclipse per poter ovviare a questo problema è necessario editare il file eclipse.ini aumentando la dimensione massima dell' heap e la PermGen size.
Su mac tale file è un pò nascosto infatti bisogna modificare il file Eclipse.app/Contents/MacOS/eclipse.ini. Per poter accedere con il Finder è necessario cliccare con il tasto destro sul file eclipse.app e scegliere "mostra contenuto pacchetto" quindi entrare nella cartella Contents > MacOS e modificare il file eclipse.ini. In particolare il parametro XX:MaxPermSize è possibile aumentarlo fino a 256m

Ecco il mio file .ini

-vmargs
-Dosgi.splashLocation=/Applications/MyEclipse 6.0/eclipse/MyEclipseSplash.bmp
-showsplash
org.eclipse.platform

-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Xms512m
-Xmx1024m
-XX:MaxPermSize=256m
-Xdock:name=MyEclipse
-Dorg.eclipse.swt.internal.carbon.smallFonts

Spero di esservi stato utile anche questa volta.

27 settembre 2008

Problemi plugin Maven4MyEclipse nella gestione di un progetto Java su MyEclipse 6.5 GA

L'ultima versione di Myclipse, in particolare la 6.5 GA include nella propria Relese un plugin proprietario per Maven(Maven4MyEclipse).
Nel caso in cui si voglia creare un nuovo progetto con il supporto di Maven, non si verifica nessun tipo di problema nell'includere nel classpath le librerie referenziate importate mediante il vostro pom.xml.

Il problema sorge quando importate un progetto Java già esistente, in tal caso switchare tra apache maven plugin e maven4myeclipse presenta un incompatibilità delle informazioni contenute all'interno dei files: .classpath and .project .

La soluzione ottimale è la seguente, almeno finchè gli sviluppatori rilascieranno un altra versione, magari con un bugFix per una capability così importante.

Innanzitutto editare il file .project che dovrà presentarti con la seguente struttura. N.B : il tag
<buildCommand>
<name>org.maven.ide.eclipse.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>

Inoltre rimpiazzare l' org.apache maven nature con :
<nature>com.genuitec.eclipse.maven.maven2Nature</nature>

Nel file .classpath aggiungere la entry ;
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>