【问题标题】:How is launching a program in eclipse different from launching it in a terminal?在 Eclipse 中启动程序与在终端中启动程序有何不同?
【发布时间】:2015-10-02 17:39:04
【问题描述】:

我有一些代码在从终端启动时可以正常工作,但从 Eclipse 中启动时就不行。显然,我可以只使用终端,但出于调试目的,最好解决问题。此外,很高兴了解正在发生的问题。谁能解释一下在 Eclipse 中启动与在终端中启动有何不同。 代码:

static public Process getNewLiEProcess(boolean redirect){
    ProcessBuilder proc = new ProcessBuilder("lie");
    proc.redirectErrorStream(redirect);
    try {
    return proc.start();
    // TODO: figure out why this consistently fails when run in Eclipse console, 
    // even though it seems to work when run in terminal.
    } catch (IOException e) {


    e.printStackTrace();
    return null;
    }
}

在 Eclipse 中启动时的错误消息:

java.io.IOException: Cannot run program "lie": error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
    at edu.siu.math.egut.io.LiE.getNewLiEProcess(LiE.java:224)
    at edu.siu.math.egut.io.LiE.<init>(LiE.java:198)
    at edu.siu.math.egut.main.CharacterAction.main(CharacterAction.java:106)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:184)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
    ... 3 more
Exception in thread "main" java.lang.NullPointerException
    at edu.siu.math.egut.io.LiE.<init>(LiE.java:202)
    at edu.siu.math.egut.main.CharacterAction.main(CharacterAction.java:106)

当使用终端启动时,相同的代码成功地实例化了一个“lie”进程(程序“lie”在我系统的 usr/bin 中)。

【问题讨论】:

    标签: java eclipse macos


    【解决方案1】:

    差异可能来自:

    • 用于执行程序的java 二进制文件
    • 环境变量,尤其是CLASSPATHJAVA_HOMEPATHLD_LIBRARY_PATH(仅举几例)
    • 各种标志传递给java
    • 工作目录

    您必须始终充分了解您的计划在上述因素方面的要求。 一旦您了解了所有这些,就可以验证需求是否正确设置,无论您是从命令行执行还是从 Eclipse 执行。

    如果你可以在命令行上运行, 那么困难的部分就完成了。 在命令行上很容易验证您的环境:

    • java -version 验证 java 二进制文件正在使用中
    • env | sort | less 验证正在使用的环境变量
    • 传递给java 的标志就在您执行的命令中
    • pwd 验证工作目录

    通常情况下很难反过来解决问题, 当事情从 Eclipse 工作但不能从命令行工作时。 验证相同的细节需要对 Eclipse 有很好的理解, 以及菜单、项目和启动器设置中的位置。

    【讨论】:

    • 非常感谢。任何关于如何获得“对 Eclipse 的良好理解,以及菜单、项目和启动器设置中的位置”的任何建议都将不胜感激。
    • 是的:使用它并经常使用它;-)(实际上我使用的是 IntelliJ 而不是 Eclipse)
    猜你喜欢
    • 1970-01-01
    • 2014-09-14
    • 2015-03-12
    • 2011-04-26
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    相关资源
    最近更新 更多