如何在运行java文件时更改路径?

时间:2014-06-25 13:59:36

标签: java error-handling

我正在尝试通过另一个java程序运行java文件。这是我的代码:

private static void printLines(String name, InputStream ins) throws Exception {     
        String line = null;
        BufferedReader in = new BufferedReader(
            new InputStreamReader(ins));
        while ((line = in.readLine()) != null) {
            System.out.println(name + " " + line);
        }
      }

      private static void runProcess(String command) throws Exception {
        Process pro = Runtime.getRuntime().exec(command);
        printLines(command + " stdout:", pro.getInputStream());
        printLines(command + " stderr:", pro.getErrorStream());
        pro.waitFor();
        System.out.println(command + " exitValue() " + pro.exitValue());
      }

      public static void main(String[] args) {
          String[] credentials=new String[4];int k=0;
          for (String s: args) {
              System.out.println(s);
            credentials[k]=s;k++;
        if(k==4)
        break;
          }
        try {
          //runProcess("javac test2.java");
          runProcess("java test2 "+credentials[0]+" "+credentials[1]+" "+credentials[2]+" "+credentials[3]+" ");

        } catch (Exception e) {
          e.printStackTrace();
        }System.out.println("hI");
      }

问题是我保存了两个文件(我执行的文件和由该文件执行的文件)在同一个文件夹中,但是当我运行此文件时,它显示class not found错误..对于test2.java,它可能由于它在其他文件夹中搜索类文件test2.class这一事实。我该怎么办? 我的文件结构:
X / Y / Laj.java
X / Y / test2.java
它将类文件存放在x文件夹中?

2 个答案:

答案 0 :(得分:0)

使用

Runtime.getRuntime().exec(command, null, workingDir);

其中workingDir是:

  

workingDir-子进程的工作目录,如果子进程应该继承当前进程的工作目录,则返回null。

答案 1 :(得分:0)

如果您使用

运行第一个程序
java x.y.Laj

然后您应该更改组成命令的行:

runProcess("java x.y.test2 "+credentials[0]+...

**后来**

由于x.y只是一个红色鲱鱼,请尝试设置系统属性:

runProcess("java  -Djava.class.path=\"/.../x/y\" " + credentials[0]+...

对于生产(Laj不是从IDE开始)考虑设置CLASSPATH,以便可以通过类路径找到所有类文件。