1

J'ai tendance à développer de nombreuses applications console en utilisant NetBeans. Beaucoup de ces applications utilisent des arguments de la ligne de commande, que je change constamment pendant le test et le débogage, il est donc frustrant d'avoir à ouvrir une boîte de dialogue dans NB chaque fois que je veux changer les arguments. De plus, beaucoup de ces arguments sont des noms de fichiers, pour lesquels j'aime avoir un tab-completion, qui n'est pas disponible dans la boîte de dialogue. Ce que j'ai recours à maintenant est la compilation d'un pot à chaque fois et l'exécution de l'application dans une fenêtre de terminal séparée, parce que je peux exécuter l'application plusieurs fois rapidement tout en modifiant les arguments de ligne de commande . Cependant, ce schéma est pénible car je ne peux plus utiliser la compilation incrémentale, car les fichiers compilés de manière incrémentielle n'apparaissent pas dans le classpath. Donc je suis obligé de faire un pot à chaque fois, ce qui est lent.Comment exécuter une application NetBeans compilée de manière incrémentielle à partir de la ligne de commande?

Ma question est comment puis-je avoir le meilleur des deux mondes? Je veux être capable d'exécuter mon application rapidement après avoir apporté des modifications rapides au code (compilation incrémentale) mais aussi modifier rapidement les arguments de la ligne de commande. Ce à quoi je pensais, c'était d'essayer de changer mon classpath afin qu'il inclue l'emplacement où vont les fichiers compilés de manière incrémentielle, mais après avoir lu les docs NB sur la compilation incrémentale, je ne suis pas sûr que cela suffise.

Répondre

1

Le compilateur incrémental quitte les classes dans le répertoire build/classes. Compte tenu de cet exemple:

package cli; 
import java.util.Arrays; 
public class Hello { 
    public static void main(String[] args) { 
     String s = "Hello, world! -> "; 
     System.out.println(s + Arrays.toString(args)); 
    } 
} 

Je reçois ces résultats en ligne de commande après l'enregistrement des modifications de code source, à savoir sans explicitement recompiler:

 
$ java -cp build/classes cli.Hello 
Hello, world! -> [] 
$ java -cp build/classes cli.Hello 123 
Hello, world! -> [123] 
$ java -cp build/classes cli.Hello 123 456 
Hello, world! -> [123, 456] 
Questions connexes