【问题标题】:Run java file using 'java filename' command [duplicate]使用'java filename'命令运行java文件[重复]
【发布时间】:2013-06-12 16:41:30
【问题描述】:

当您不在文件中时,我想使用“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 线程“主”java.lang.NoClassDefFoundError 中的异常: /Users/apple/Documents/Documents/workspace/UserTesting/src/NewFile 引起:java.lang.ClassNotFoundException: .Users.apple.Documents.Documents.workspace.UserTesting.src.NewFile 在 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) 在 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 在 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) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) Apples-MacBook-Pro:src 苹果$ 块引用

【问题讨论】:

  • "java /Users/apple/Documents/Documents/workspace/UserTesting/src/NewFile" 呢?
  • @BrianRoach 这个问题没有正确答案

标签: java eclipse terminal execution


【解决方案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())。

【讨论】:

  • 是的,我们已经尝试在他第一次发布此内容时向他解释。
  • 啊,抱歉,没有尝试搜索以前的帖子...
  • @fge 解释很简单,非常感谢
猜你喜欢
  • 1970-01-01
  • 2014-10-01
  • 2019-04-15
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 2018-05-01
相关资源
最近更新 更多