View Full Version : [Java] opzioni di compilazione sotto Netbeans
Salve. Avrei bisogno dell'aiuto di un esperto di Netbeans che ne utilizzi una delle versioni attuali. Ho installato su 2 partizioni diverse le versioni 6.7.1 e 6.8 di Netbeans e non cambia nulla. Il mio problema è dovuto al fatto che devo debuggare un programma e se lo compilo coi comandi di Netbeans non riesco a vedere i valori di tutte le variabili coinvolte nel processo. Netbeans mi segnala che questo succede perché ho compilato senza l'opzione "-g". Ok, giusto. Ma non riesco a trovare dove io possa inserire questa opzione. Tanto più che le soluzioni che ho trovato finora (tasto destro sul progetto, properties->build->compiling e generate debugging info) devono essere riferite a versioni precedenti del programma visto che nelle mie questi campi non esistono proprio dentro properties. C'è un campo "build & run" in cui posso scegliere degli script. Il fatto è che anche l'help di Netbeans deve essere stato fatto per una versione precedente perché anche questo fa riferimento al menu "compiling".
La cosa strana è che quelle schede non sono mai cambiate, almeno dalla versione 5 in poi.
Hai per caso creato un progetto free-form o importato un progetto esterno?
Puoi usare ant per gestire la faccenda. Apri il build.xml e crei un tuo task per la compilazione in cui specifichi l'opzione -g.
La cosa strana è che quelle schede non sono mai cambiate, almeno dalla versione 5 in poi.
Hai per caso creato un progetto free-form o importato un progetto esterno?
Puoi usare ant per gestire la faccenda. Apri il build.xml e crei un tuo task per la compilazione in cui specifichi l'opzione -g.
Sì. Il progetto non l'ho creato io. Anche nella mailing list di netbeans mi hanno detto la stessa cosa. Praticamente sto lavorando sul compilatore java ed ho importato nel mio netbeans un progetto già creato da altri.
Proverò a capire come fare a gestire questa cosa con ant.
Ho appena spulciato l'help di NB. Il progetto che sto usando io risulta come freeform (ho scoperto cos'è un progetto freeform :asd: ). Resta il fatto che non so come aggiungere le opzioni di compilazione.
Se è un freeform allora hai uno script ant esterno (un file build.xml). Prova a spulciare quel file, dovrebbe esserci da qualche parte un target "javac" o un target che causa l'esecuzione del task "javac". Ti basta trovare quello e impostare gli attributi debug e debuglevel
http://ant.apache.org/manual/CoreTasks/javac.html
Può essere che sia questo pezzo qui?
<target name="-def-build-classes" depends="-def-pcompile">
<macrodef name="build-classes">
<attribute name="includes"/>
<attribute name="excludes" default="${exclude.files} **/package-info.java"/>
<attribute name="classes.dir" default="${build.classes.dir}"/>
<attribute name="gensrc.dir" default="${build.gensrc.dir}"/>
<attribute name="javac.bootclasspath" default="${build.bootstrap.dir}/classes"/>
<attribute name="bootclasspath.opt" default="${javac.bootclasspath.opt}"/>
<attribute name="classpath" default="${javac.classpath}"/>
<attribute name="sourcepath" default="${javac.sourcepath}"/>
<attribute name="java.home" default="${boot.java.home}"/>
<attribute name="source" default="${javac.source}"/>
<attribute name="target" default="${javac.target}"/>
<attribute name="release" default="${release}"/>
<attribute name="full.version" default="${full.version}"/>
<sequential>
<echo level="verbose" message="build-classes: excludes=@{excludes}"/>
<echo level="verbose" message="build-classes: bootclasspath.opt=@{bootclasspath.opt}"/>
<echo level="verbose" message="build-classes: classpath=@{classpath}"/>
<echo level="verbose" message="build-classes: sourcepath=@{sourcepath}"/>
<mkdir dir="@{gensrc.dir}"/>
<mkdir dir="@{classes.dir}"/>
<pcompile srcdir="${src.classes.dir}"
destdir="@{gensrc.dir}"
includes="@{includes}"/>
<copy todir="@{gensrc.dir}">
<fileset dir="${src.classes.dir}" includes="@{includes}"/>
<globmapper from="*.properties-template" to="*.properties"/>
<filterset begintoken="$(" endtoken=")">
<filter token="JDK_VERSION" value="${jdk.version}"/>
<filter token="RELEASE" value="@{release}"/>
<filter token="FULL_VERSION" value="@{full.version}"/>
</filterset>
</copy>
<pcompile srcdir="@{gensrc.dir}"
destdir="@{gensrc.dir}"
includes="**/*.properties"/>
<javac fork="true"
executable="@{java.home}/bin/javac"
srcdir="${src.classes.dir}:@{gensrc.dir}"
destdir="@{classes.dir}"
includes="@{includes}"
excludes="@{excludes}"
sourcepath="@{sourcepath}"
classpath="@{classpath}"
includeAntRuntime="no"
source="@{source}"
target="@{target}"
debug="${javac.debug}"
debuglevel="${javac.debuglevel}">
<compilerarg value="-implicit:none"/>
<compilerarg value="-Xprefer:source"/>
<compilerarg value="-J-Xbootclasspath/p:@{javac.bootclasspath}"/>
<compilerarg line="@{bootclasspath.opt}"/>
<compilerarg line="${javac.no.jdk.warnings}"/>
<compilerarg line="${javac.version.opt}"/>
<compilerarg line="${javac.lint.opts}"/>
</javac>
<copy todir="@{classes.dir}" includeemptydirs="false">
<fileset dir="${src.classes.dir}" includes="@{includes}" excludes="@{excludes}">
<exclude name="**/*.java"/>
<exclude name="**/*.properties"/>
<exclude name="**/*-template"/>
<exclude name="**/package.html"/>
</fileset>
</copy>
</sequential>
</macrodef>
</target>
Devo aggiungere un compilerarg value?
E' lui. Il nodo da manipolare è:
<javac fork="true"
executable="@{java.home}/bin/javac"
srcdir="${src.classes.dir}:@{gensrc.dir}"
destdir="@{classes.dir}"
includes="@{includes}"
excludes="@{excludes}"
sourcepath="@{sourcepath}"
classpath="@{classpath}"
includeAntRuntime="no"
source="@{source}"
target="@{target}"
debug="${javac.debug}"
debuglevel="${javac.debuglevel}">
prova a togliere debug e debuglevel e metti un compilerarg con value "-g".
Più che altro perchè non mi ricordo cosa vada in debug e debuglevel...
E' lui. Il nodo da manipolare è:
<javac fork="true"
executable="@{java.home}/bin/javac"
srcdir="${src.classes.dir}:@{gensrc.dir}"
destdir="@{classes.dir}"
includes="@{includes}"
excludes="@{excludes}"
sourcepath="@{sourcepath}"
classpath="@{classpath}"
includeAntRuntime="no"
source="@{source}"
target="@{target}"
debug="${javac.debug}"
debuglevel="${javac.debuglevel}">
prova a togliere debug e debuglevel e metti un compilerarg con value "-g".
Più che altro perchè non mi ricordo cosa vada in debug e debuglevel...
La soluzione stava proprio nel campo debuglevel e ci sono arrivato tramite il link che hai postato sopra. Il fatto è che ciò che andava modificato non era il file build.xml ma piuttosto build.properties, dove a debuglevel erano assegnati i valori "source" e "lines" e mancava il valore "vars". Aggiunto quello, è sparito il "warning" (chiamiamolo così, anche se non è un warning vero e proprio) di NB.
EDIT: Dimenticavo un "grazie" per l'aiuto... :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.