On 12/8/05, Tamas Horvath <[EMAIL PROTECTED]> wrote:>> Runtime rtime = 
Runtime.getRuntime();>             Process child = rtime.exec("/bin/sh");>>>    
         BufferedWriter outCommand = new BufferedWriter(new>             
OutputStreamWriter( child.getOutputStream()));>>>             
outCommand.write("cd "+workhome +"; chmod +x run.bat;> exit\n");>             
outCommand.flush();>>             child.waitFor();>             child.destroy();


this runs well the script gets the  executable  flag
            rtime = Runtime.getRuntime();>             child = 
rtime.exec(workhome+"run.bat");>>             BufferedReader input = new 
BufferedReader(new> InputStreamReader( child.getInputStream()));>             
BufferedReader inerr = new BufferedReader(new> 
InputStreamReader(child.getErrorStream()));>>             String line = 
"";String lerr = "";>             while ( (line = input.readLine()) != null || 
(lerr => inerr.readLine()) != null){>                 if (line != null && 
!line.equals(""))  {>                     System.out.println(line);>            
         lerr = inerr.readLine();>                 }>                 if (lerr 
!= null && !lerr.equals(""))  System.out.println> (lerr);>             }>>      
       child.waitFor();>             
System.err.println("EV:"+child.exitValue());>             child.destroy();


Here I only get the exit value, and nothing else


On 12/8/05, Thomas Down <[EMAIL PROTECTED]> wrote:>>> On 8 Dec 2005, at 14:16, 
Tamas Horvath wrote:>> > I know this is not strictly BioJava, but here's my 
problem:> > I create a shell script file that would run a GROMACS MD> > 
simulationI generate the necessary input and config files> > I can make the 
generated shell script runnable> > I cannot actually run the script from the 
Java application.> > The script works fine from shell...> > The returned 
exitValue is 255.> > Can anyone tell, what may I do?>> Could you give a few 
more details about the code you're using to run> the shell script from Java?  
Running external processes using Java's> Runtime.exec method isn't totally 
trivial -- you usually need to> start some extra threads to handle the child 
process' input and output.>> I presume your script is actually printing some 
kind of error message> to standard error (or maybe standard out, if it's badly 
behaved, but> these may be getting lost.>> BioJava has some convenience met!
hods that (usually) allow you to run> child processes without writing your own 
multithreaded code.  A> simple usage, that echoes the child's errors and 
outputs to the> console, would be something like:>>           
ProcessTools.exec(>                            new String[] 
{"/path/to/my/script", "-> someArgument"},>                            null,    
       // no standard input>                            new 
OutputStreamWriter(System.out),>                            new 
OutputStreamWriter(System.err)>           );>> You probably don't want to do 
this in production code, but for> development and debugging it's quite useful.  
For production use,> you'd normally use StringWriters to capture the child 
process' output.>>              Thomas.>
_______________________________________________
Biojava-l mailing list  -  Biojava-l@biojava.org
http://biojava.org/mailman/listinfo/biojava-l

Reply via email to