本帖最后由 gaoyangboy 于 2009-11-04 13:22:20 编辑

解决方案 »

  1.   

    一般来说,安装之后会把这个路径写在注册表里。
    像tomcat这类的软件的话,是会配置环境变量的。比如,tomcat的根目录的环境变量就是:TOMCAT_HOME。不配置这个环境变量是不能启动的。你说的,应该是第一种,你查查java访问注册表的方法。
      

  2.   

    String command = "explorer.exe www.google.com";
    Runtime r=Runtime.getRuntime();   
    Process p=r.exec(command);   
      

  3.   

    String command = "explorer.exe www.google.com"; 
    Runtime r=Runtime.getRuntime();  
    Process p=r.exec(command);  
      

  4.   

     执行非dos类命令,例如java   
        
      import   java.util.*;   
      import   java.io.*;   
        
      public   class   MediocreExecJavac   
      {   
              public   static   void   main(String   args[])   
              {   
                      try   
                      {                           
                              Runtime   rt   =   Runtime.getRuntime();   
                              Process   proc   =   rt.exec("javac");   
                              InputStream   stderr   =   proc.getErrorStream();   
                              InputStreamReader   isr   =   new   InputStreamReader(stderr);   
                              BufferedReader   br   =   new   BufferedReader(isr);   
                              String   line   =   null;   
                              System.out.println("<ERROR>");   
                              while   (   (line   =   br.readLine())   !=   null)   
                                      System.out.println(line);   
                              System.out.println("</ERROR>");   
                              int   exitVal   =   proc.waitFor();   
                              System.out.println("Process   exitValue:   "   +   exitVal);   
                      }   catch   (Throwable   t)   
                          {   
                              t.printStackTrace();   
                          }   
              }   
      }   
        
        
      -----------------------------------   
        
        
      执行dos,windows命令:   
        
      import   java.util.*;   
      import   java.io.*;   
        
      class   StreamGobbler   extends   Thread   
      {   
              InputStream   is;   
              String   type;   
                
              StreamGobbler(InputStream   is,   String   type)   
              {   
                      this.is   =   is;   
                      this.type   =   type;   
              }   
                
              public   void   run()   
              {   
                      try   
                      {   
                              InputStreamReader   isr   =   new   InputStreamReader(is);   
                              BufferedReader   br   =   new   BufferedReader(isr);   
                              String   line=null;   
                              while   (   (line   =   br.readLine())   !=   null)   
                                      System.out.println(type   +   ">"   +   line);           
                              }   catch   (IOException   ioe)   
                                  {   
                                      ioe.printStackTrace();       
                                  }   
              }   
      }   
        
      public   class   GoodWindowsExec   
      {   
              public   static   void   main(String   args[])   
              {   
                      if   (args.length   <   1)   
                      {   
                              System.out.println("USAGE:   java   GoodWindowsExec   <cmd>");   
                              System.exit(1);   
                      }   
                        
                      try   
                      {                           
                              String   osName   =   System.getProperty("os.name"   );   
                              String[]   cmd   =   new   String[3];   
      System.out.println(   osName);   
                              if(   osName.equals(   "Windows   2000"   )   )   
                              {   
                                      cmd[0]   =   "cmd.exe"   ;   
                                      cmd[1]   =   "/C"   ;   
                                      cmd[2]   =   args[0];   
                                        
                              }   
                              else   if(   osName.equals(   "Windows   95"   )   )   
                              {   
                                      cmd[0]   =   "command.com"   ;   
                                      cmd[1]   =   "/C"   ;   
                                      cmd[2]   =   args[0];   
                              }   
                                
                              Runtime   rt   =   Runtime.getRuntime();   
                              System.out.println("Execing   "   +   cmd[0]   +   "   "   +   cmd[1]     
                                                                    +   "   "   +   cmd[2]);   
                              Process   proc   =   rt.exec(cmd);   
                              //   any   error   message?   
                              StreamGobbler   errorGobbler   =   new     
                                      StreamGobbler(proc.getErrorStream(),   "ERROR");                           
                                
                              //   any   output?   
                              StreamGobbler   outputGobbler   =   new     
                                      StreamGobbler(proc.getInputStream(),   "OUTPUT");   
                                        
                              //   kick   them   off   
                              errorGobbler.start();   
                              outputGobbler.start();   
                                                                                
                              //   any   error???   
                              int   exitVal   =   proc.waitFor();   
                              System.out.println("ExitValue:   "   +   exitVal);                   
                      }   catch   (Throwable   t)   
                          {   
                              t.printStackTrace();   
                          }   
              }   
      }   
        
      

  5.   

    你可以让用户使用前配置一下第三方软件的路径,
    另外的方法就只能尝试自己去猜测程序的安装路径了,毕竟使用的第三方软件是不可控的
    楼上的有提到操作注册表,也是个办法,不过java自带的操作注册表的方法只能操作java自己注册表路径,如果要读取第三方的注册表信息,可能要用到jni。
      

  6.   

    你可以让用户使用前配置一下第三方软件的路径跟我想的一样,可以用file按钮
      

  7.   

    看我的帖子吧。哈哈终于有用了
    http://blog.csdn.net/kky2010_110/archive/2009/05/30/4225428.aspx
      

  8.   

    实际上用 java 去调用操作系统命令是种很变态的做法,不建议这么做!