【发布时间】:2016-09-29 04:53:33
【问题描述】:
我正在尝试使用 Runtime.getRuntime().exec("") 方法停止从 java 应用程序启动的 wscript。我使用 wscript 启动了一个 mysql 服务器。但是当我关闭我的 java 应用程序时 wscript 没有关闭,因此,每次 80% 的内存都被 wscript.exe 填满时,我都会重新启动我的应用程序,这会使我的电脑变慢。 所以我的问题是如何在 wscript.exe 使用结束后安全地关闭它。如果有人问过这个问题,请指出正确的方向
public void startMySQLServer() {
try {
Process process = Runtime.getRuntime().exec("wscript C:\\\\\\\\Users\\\\\\\\Shersha\\\\\\\\Documents\\\\\\\\NetBeansProjects\\\\\\\\Berries\\\\\\\\batch\\\\\\\\mysql_start.vbs");
System.out.println("waiting to start mysql server");
process.waitFor();
System.out.println("mysql server started sucessfully");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException ex) {
Logger.getLogger(DataBaseManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
已编辑
public void stopMySQLServer() {
try {
Process process = Runtime.getRuntime().exec("wscript C:\\\\\\\\Users\\\\\\\\Shersha\\\\\\\\Documents\\\\\\\\NetBeansProjects\\\\\\\\Berries\\\\\\\\batch\\\\\\\\mysql_stop.vbs");
System.out.println("waiting to stop mysql server");
process.waitFor();
process.destroy();
System.out.println("process exit value" + process.exitValue());
System.out.println("mysql server stopped sucessfully");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException ex) {
Logger.getLogger(DataBaseManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
已编辑 2 mysql_start.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
If WScript.Arguments.length = 0 Then
Set ObjShell = CreateObject("Shell.Application")
ObjShell.ShellExecute "wscript.exe", """" & _
WScript.ScriptFullName & """" &_
" RunAsAdministrator", , "runas", 1
Wscript.Quit
End if
CreateObject("Wscript.Shell").Run "C:\Users\Shersha\Documents\NetBeansProjects\Berries\batch\mysql_start.bat",0,True
【问题讨论】: