У меня есть приложение Java, в котором пользователь может предоставить любой исполняемый файл (.exe), и приложение запустит его в системе.Как cmd.exe, notepad.exe или в unix a.out и т. Д.
Теперь код, который я написал после просмотра многочисленных примеров, просто не работает для файлов, созданных пользователем, notepad.exe работает нормально, нофайлы, написанные с использованием TC ++, и все не работают.Может кто-нибудь указать, что может быть причиной ошибки здесь?
import java.io.*;
class NewThread implements Runnable{
Thread t;
NewThread(){
t = new Thread(this, "Demo Thread");
System.out.println("child thread:" + t);
t.start();
}
public void run(){
try
{
String line;
Process p = Runtime.getRuntime().exec("C:\\TC\\BIN\\AA.EXE");
InputStream in = p.getInputStream();
OutputStream out = p.getOutputStream();
InputStream err = p.getErrorStream();
BufferedReader br= new BufferedReader(new InputStreamReader(in));
System.out.println("Chid running");
while((line=br.readLine())!=null){
System.out.println(line);
}
//p.destroy();
}
catch (Exception e)
{
System.out.println("ERROR");
}
System.out.println("Child thread exiting");
}
}
class ThreadDemo {
public static void main (String args[]){
new NewThread();
try {
for(int i=05;i>0;i--){
System.out.println("Main Thread:" + i);
Thread.sleep(1000);
}
} catch (InterruptedException e){
System.out.println("Main thread Interrupted");
}
System.out.println("Main thread exiting");
}
}
.... ОК ... не работает означает, что когда я запускаю его с помощью Eclipse-> дочерний поток выходит [всеСообщения system.out печатаются на консоли, но не те, которые должны быть напечатаны .exe AA.exe не запускается вообще.Некоторые другие пункты:
- Работает нормально, исключений не выдается, проблема только в том, что вывод AA.exe нигде не виден.
- Он печатает код выхода 7 дляпроцесс ... любой ключ ????
- notepad.exe или MSWord.exe и даже TC.exe работают совершенно нормально при вызове через этот код.
вот код для AA.exe:
#include <stdlib.h>
#include <stdio.h>
#include <values.h>
#include <time.h>
int main(void)
{
int i,j;
for(j=0;j<150;j++)
{
// randomize();
for(i=0;i<200;i++)
printf("%d\n", rand() % MAXINT);
}
return 0;
}