当前位置: 技术问答>java相关
关于Runtime的问题,快来看看
来源: 互联网 发布时间:2015-08-27
本文导语: 如何在程序中用语句启动一个进程,比如用java语句启动sqlplus, import java.io.*; public class TestRun { public static void main(String[] args) { try {Runtime.getRuntime().exec("sqlplus"); } catch(IOException e) { Sys...
如何在程序中用语句启动一个进程,比如用java语句启动sqlplus,
import java.io.*;
public class TestRun
{ public static void main(String[] args)
{ try
{Runtime.getRuntime().exec("sqlplus");
}
catch(IOException e)
{ System.out.print("error "+e);
}
}
}
为什么程序运行的时候弹出黑框后就立刻消失了,sqlplus却不能启动。
import java.io.*;
public class TestRun
{ public static void main(String[] args)
{ try
{Runtime.getRuntime().exec("sqlplus");
}
catch(IOException e)
{ System.out.print("error "+e);
}
}
}
为什么程序运行的时候弹出黑框后就立刻消失了,sqlplus却不能启动。
|
是不是需要参数啊?
|
用另一个API试试,把sqlplus所在的目录写在第三个参数上。
exec(String command, String[] envp, File dir)
exec(String command, String[] envp, File dir)
|
我也遇到类似的问题,但我是重启一个进程。
我想之所以这样我想是因为一:你要在sqlplus 后加上用户名和密码; 二:指出sqlplus可执行程序的具体路径;三:加上运行这个名令的shell文件。
以上只能做为参考,因为到现在为止,我的问题还没有解决!
如果要带参数应该怎么加???
关注!!!!!
我想之所以这样我想是因为一:你要在sqlplus 后加上用户名和密码; 二:指出sqlplus可执行程序的具体路径;三:加上运行这个名令的shell文件。
以上只能做为参考,因为到现在为止,我的问题还没有解决!
如果要带参数应该怎么加???
关注!!!!!
|
运行其他程序有问题么?
BufferedReader prcout = new BufferedReader(
new InputStreamReader(
new BufferedInputStream(prc.getInputStream())));
while ((line = prcout.readLine()) != null){
System.out.println(line);
}
把执行以后的信息打出来看看?要不然用sqlplusw.exe好了,合乎俄。
BufferedReader prcout = new BufferedReader(
new InputStreamReader(
new BufferedInputStream(prc.getInputStream())));
while ((line = prcout.readLine()) != null){
System.out.println(line);
}
把执行以后的信息打出来看看?要不然用sqlplusw.exe好了,合乎俄。
|
我刚刚试了,不管有没有使用完整路径,都可以正常启动sqlplus阿。
|
Java支持DOS命令,但要加上cmd /c
例如:Runtime.getRuntime().exec("cmd /c dir");就可运行!
例如:Runtime.getRuntime().exec("cmd /c dir");就可运行!
|
Runtime.getRuntime().exec("****") 这里的**** 应该是可执行程序
xxxx.exe (对应于oracle..binsqlplusw.exe)
xxxx.exe (对应于oracle..binsqlplusw.exe)
|
exec(String command, String[] envp, File dir)
试着把sqlplus的工作目录和环境变量传进去看看行不?
试着把sqlplus的工作目录和环境变量传进去看看行不?
|
凡是你在命令行可以正确执行的命令(cmd),你用Runtime.getRuntime().exec(cmd)就可以启动,当然要用'/'代替'';如果你在命令行中能使用参数,那用Runtime就也可以。
行不行,你自己先在Windows的模拟dos窗口执行看看嘛。不行的话,那就根本不管Runtime的事。
行不行,你自己先在Windows的模拟dos窗口执行看看嘛。不行的话,那就根本不管Runtime的事。
|
Process p = Runtime.getRuntime().exec("cmd.exe /c F:\oracle\ora81\bin\sqlplus.exe");
p.waitFor();
p.waitFor();