1

ファイルに直接アクセスしていないときに、「java filename」コマンドを使用して 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 スレッド「メイン」で例外 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) の java.net.URLClassLoader.findClass(URLClassLoader.java:190) の java.lang.ClassLoader.loadClass(ClassLoader.java:306) の 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 スレッド「メイン」での例外 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

これは機能しません。

1 つcdは、シェル コマンドです。次に、Java コマンドを実行する別のプロセスを作成します。

ProcessBuilderが必要です。初期ディレクトリ、環境などを設定できます。

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

// Change directory
pb.directory(wantedCwd);

コマンドの stdin、stdout、stderr などを変更することもできます。

使用しないでRuntime.exec()ください。exec()多くの状況では ( ) なりません。

于 2013-06-16T16:42:32.230 に答える