Estoy usando Eclipse para desarrollar un programa Java, y pensé que agregaría una opción a mi programa para analizar stdin si no hay argumentos. (de lo contrario, analiza un archivo)Java + Eclipse: ¿cómo depurar un programa java que está recibiendo canalizado/redireccionado stdin?
Estoy teniendo problemas si ejecuto "somecommand | java -jar myjar.jar"
y fui a depurar ... entonces me di cuenta de que no sé cómo iniciar un proceso en Eclipse de esa manera. Y si lo ejecuto en el símbolo del sistema, no puedo adjuntarlo a un proceso en ejecución ya que el proceso comienza inmediatamente.
¿Alguna sugerencia sobre cómo depurar?
edit: mira, lo que pasa es que escribí mi programa originalmente para tomar un argumento de nombre de archivo. Luego pensé que sería útil que tomara stdin también, así que hizo abstract InputStream fuera de mi programa (como lo sugiere el Sr. Queue). Funciona bien al funcionar en un archivo (java -jar myjar.jar myfile
), pero no funciona cuando ejecuto type myfile | java -jar myjar.jar
. Sospecho que hay algo diferente en los dos escenarios (¿la detección de eof es diferente?) Pero realmente me gustaría depurar.
// overall program structure follows:
public static void doit(InputStream is)
{
...
}
public static void main(String[] args)
{
if (args.length > 0)
{
// this leaves out the try-catch-finally block,
// but you get the idea.
FileInputStream fis = new FileInputStream(args[0]);
doit(fis);
fis.close();
}
else
{
doit(System.in);
}
}
¿Poner los args en su configuración de ejecución de Eclipse hace el truco? – javamonkey79
Estos no son args. Es el hecho de que tengo que canalizar en algún comando. –