问题:到了数据库的时候不见数据库启动?
postgresql 数据库
环境变量是进到\bin目录
pg_ctl 为数据库启动命令。下resin同。
各位大哥帮帮手。package com.jasinda.JToNTservice;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;public class TestNTService { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub Process pro;
try {
pro = Runtime.getRuntime().exec("cmd");
System.out.println("000000");
InputStream is = pro.getInputStream();
//InputStream isES = pro.getErrorStream();
OutputStream os = pro.getOutputStream();
String sCmd0 = "cd %PGSQL_HOME%";// such as dir
os.write(sCmd0.getBytes());
System.out.println("111111");
System.out.println();
String sCmd1="pg_ctl -D ../data start";
os.write(sCmd1.getBytes());
System.out.println("222222");
System.out.println();
// try {
// pro.wait(1000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
String sCmd2 = "cd %RESIN_HOME%";
os.write(sCmd2.getBytes());
System.out.println("333333");
System.out.println();
String sCmd3="httpd.exe";
os.write(sCmd3.getBytes());
System.out.println("444444");
System.out.println();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while (true) {
String s = br.readLine();
if (s == null)
break;
System.out.println(s);
}
//br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 从is和isES中可以得到数据
}}}

解决方案 »

  1.   

    写成.bat批处理文件再执行试试
      

  2.   

    我写过的。
    批处理如下:
    @echo offcd $PRODUCT_NAME$\window\pgsql\bin
    pg_ctl -D ../data startpause$PRODUCT_NAME$window\resin3.0\httpd.exepauseecho. & pausejava程序如下:
    package com.jasinda.JToNTservice;import java.io.IOException;public class TestService { public static void main(String[] args) {
    Runtime runTime = Runtime.getRuntime();
    try {
    runTime.exec("C:\\Program Files\\jasindawindow\\setenv\\start.bat");
    } catch (IOException e) { } }}
    结果没什么反应。
    单独运行批处理时就很好。
    谢谢楼上先。
      

  3.   

    String sCmd0 = "cd %PGSQL_HOME%" 
    像这中命令后面加上"\n",表示回车。否则不会运行。
    还有最好将命令运行的输出显示出来,否则看不到运行结果,不方便调试。
      

  4.   

    不用搞了。问题已解决。机子中了病毒的原因。今早杀死1110个病毒。哈哈。好有成就感!
    SORRY,感谢大家的关心帮助。