Déboguer mon code avec Java jdb. Je suis bloqué à un point où mon programme attend l'entrée de la ligne de commande, mais jdb l'intercepte comme une commande jdb.Comment passer l'entrée de la console à un programme Java en cours d'exécution plutôt qu'à jdb?
Comment puis-je dire à jdb de transmettre le texte au programme en cours d'exécution?
Version:
C:\Documents and Settings\*snip*>java -showversion
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing)
Compile:
javac -g LZWDecompress.java
jdb.ini:
stop in LZWDecompress.decompress
run
monitor list
Voici ce qui se passe:
Initializing jdb ...
*** Reading commands from C:\Documents and Settings\*snip*\jdb.ini
Deferring breakpoint LZWDecompress.decompress.
It will be set after the class is loaded.
> run LZWDecompress
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
> > >
VM Started: Set deferred breakpoint LZWDecompress.decompress
File to be decompressed:
À l'invite ci-dessus, j'entre "test", et de recevoir cette réponse:
...
VM Started: Set deferred breakpoint LZWDecompress.decompress
File to be decompressed: test
Unrecognized command: 'test'. Try help...
>
Voici le code de la fonction principale (...), écrit par notre instructeur, pas moi:
public static void main(String[] args) throws IOException {
short [] source;
int dlen;
int sz;
byte [] decompressed;
BufferedReader br;
DataInputStream In;
FileInputStream FI;
FileOutputStream FO;
InputStreamReader isr;
String cfnm;
String sfnm;
source = new short[INPUT_FILE_IO_BUFFER_SIZE];
decompressed = new byte[OUTPUT_FILE_IO_BUFFER_SIZE];
isr = new InputStreamReader(System.in);
br = new BufferedReader(isr);
System.out.print("File to be decompressed: ");
System.out.flush();
sfnm = br.readLine();
System.out.print("Name of the decompressed file: ");
System.out.flush();
cfnm = br.readLine();
FI = new FileInputStream(sfnm);
In = new DataInputStream(FI);
FO = new FileOutputStream(cfnm);
for (sz=0; true; ++sz) {
try { source[sz] = In.readShort();
} catch (EOFException e) { break;
} catch (Exception e) { System.out.print(e.toString());
}
}
dlen = decompress(source, sz, decompressed);
FO.write(decompressed, 0, dlen);
FO.close();
} // end main()
Hey TofuBeer, merci pour la (modification) clarification. Quand vous dites "la ligne de commande n'est pas la même que la console!" voulez-vous dire quand l'application est lancée, j'interagis avec la console au lieu de la ligne de commande? Je n'ai jamais pensé à cette distinction auparavant, alors je vous remercie de l'avoir soulevé. Merci! : D – iokevins