1

当您不在文件中时,我想使用“java 文件名”命令运行 java 文件。

在我们使用的终端中:

cd 文件路径

java 文件名

但是在 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 线程“main”中的异常 java.lang.NoClassDefFoundError: /Users/apple/Documents/Documents/workspace/UserTesting /src/NewFile 原因: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) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Apples-MacBook-Pro:src apple$ java /Users/apple/Documents/Documents/workspace/UserTesting/src/NewFile.java 线程“main”中的异常 java.lang.NoClassDefFoundError: /Users/apple/Documents/Documents/workspace /UserTesting/src/NewFile/java 引起:java.lang.ClassNotFoundException: .Users.apple.Documents.Documents.workspace.UserTesting.src.NewFile.java at java.net.URLClassLoader$1.run(URLClassLoader.java:202 ) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$ AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Apples-MacBook-Pro:src apple$ Blockquote

4

1 回答 1

1

这行不通。

一方面,cd是一个shell命令。然后创建另一个进程来运行 java 命令。

您需要一个ProcessBuilder。您可以设置初始目录、环境等:

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

// Change directory
pb.directory(wantedCwd);

您甚至可以更改命令的标准输入、标准输出、标准错误等。

不要使用Runtime.exec(). exec()在许多情况下它不会 ( )。

于 2013-06-16T16:42:32.230 回答