2013-06-16 2 views
1

Я хочу запустить java-файл, используя команду «java filename», когда вы не находитесь в файле напрямую.Запустить java-файл с помощью команды «java filename»

В терминале мы используем:

cd filepath

java filename

но в Eclipse, вы не можете изменить директорию с помощью «CD», так как я могу запустить файл, хотя я не могу изменить каталог

Я используя этот метод, чтобы выполнить команду с помощью Java

try { 
      String line; 
      Process p = Runtime.getRuntime().exec("cd /Users/apple/Documents/Documents/workspace/UserTesting/src"); 
      Process p2 = Runtime.getRuntime().exec("java NewFile"); 

      BufferedReader in = new BufferedReader(
        new InputStreamReader(p2.getInputStream())); 
      while ((line = in.readLine()) != null) { 
      System.out.println(line); 
      } 
      in.close(); 

    } 
    catch (Exception e) { 
      // ... 
     } 

Вот несколько испытаний

Apples-MacBook-Pro:~ apple$ cd /Users/apple/Documents/Documents/workspace/UserTesting/src Apples-MacBook-Pro:src apple$ java NewFile 5 90 35 45 150 3
Reichweite---- nach blase art
3 5 35 45 90 150

Apples-MacBook-Pro:src apple$ java /Users/apple/Documents/Documents/workspace/UserTesting/src/NewFile Exception in thread "main" java.lang.NoClassDefFoundError: /Users/apple/Documents/Documents/workspace/UserTesting/src/NewFile Caused by: java.lang.ClassNotFoundException: .Users.apple.Documents.Documents.workspace.UserTesting.src.NewFile at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Apples-MacBook-Pro:src apple$ java /Users/apple/Documents/Documents/workspace/UserTesting/src/NewFile.java Exception in thread "main" java.lang.NoClassDefFoundError: /Users/apple/Documents/Documents/workspace/UserTesting/src/NewFile/java Caused by: java.lang.ClassNotFoundException: .Users.apple.Documents.Documents.workspace.UserTesting.src.NewFile.java at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Apples-MacBook-Pro:src apple$ Blockquote

+0

Что относительно '' java/Пользователи/apple/Documents/Documents/workspace/UserTesting/src/NewFile "'? –

+0

@BrianRoach это вопрос не имеет правильных ответов – student1234

ответ

1

Это не сработает.

Для одного, cd является командованием оболочки. И затем вы создаете еще один процесс для запуска команды java.

Вам нужен ProcessBuilder. Вы можете установить начальный каталог, окружающую среду и т.д.:

final File wantedCwd = new File(...); 
final ProcessBuilder pb = new ProcessBuilder("java", "thefile"); 

// Change directory 
pb.directory(wantedCwd); 

Вы можете даже изменить стандартный ввод, стандартный вывод, STDERR и т.д. команды.

НЕ используйте Runtime.exec(). Это не будет (exec()) во многих ситуациях.

+2

Да, мы попробовали объяснить, что ему уже в первый раз он разместил это. –

+0

Ах, извините, не пробовал и не пытался найти предыдущий пост ... – fge

+0

@fge это было довольно простое объяснение, спасибо большое – student1234

Смежные вопросы