brug taskkill igennem runtime
jeg er ikke alt for skarp til at bruge runtime i java, men jeg har lavet et program, der starter rmirgistry via min applikation, og derefter opretter en rmi server. alt dette går efter planen, men når programmet er slut, kan jeg ikke finde ud af at lukke rmiregistry igen.min kode:
public void run()
{
Runtime rt = Runtime.getRuntime();
Process p;
try
{
p = rt.exec("rmiregistry");
System.out.println("rmiRegistry startes");
p.waitFor();
} catch (Exception e)
{
try
{
p = rt.exec("taskkill", new String[] {"/IM", "rmiregistry.exe"});
System.out.println("rmiRegistry lukkes!");
p.waitFor(); // ------- linie 55 -------
} catch (Exception f)
{
System.out.println("rmiRegistry blev ikke lukket!");
f.printStackTrace();
}
System.out.println("Serveren lukkes");
System.exit(0);
e.printStackTrace();
}
}
Først oprettes rmiregistry
når klienten er færdig, kaldes interrupt() på tråden, så der sker en fejl.
når "fejlen" er sket burde den lukke rmiregistry.
Jeg har også prøvet med
p = rt.exec("taskkill /IM rmiregistry.exe"});
Mit output er
rmiRegistry lukkes!
rmiRegistry blev ikke lukket!
java.lang.InterruptedException
at java.lang.ProcessImpl.waitFor(Native Method)
at Main.run(Main.java:55)
at java.lang.Thread.run(Thread.java:619)
Serveren lukkes