Eclipse plugin OcaIDE不';看不到JoCaml工具

Eclipse plugin OcaIDE不';看不到JoCaml工具,eclipse-plugin,ocaml,ocamlbuild,Eclipse Plugin,Ocaml,Ocamlbuild,在ocamlbuild模式下使用时遇到问题。我正试图整理我自己的资料。根据(页面底部),要将ocamlbuild与JoCaml一起使用,我只需要将-use-JoCaml参数添加到ocamlbuild。事实上,如果我深入到我的项目的根本并写 ocamlbuild-使用jocaml foo.native 它可以生成我的可执行文件 然而,在OcaIDE中,我得到了 /bin/sh:jocamdep:未找到命令 在OcaIDE中,-use jocaml标志被传递到“其他标志”框中(在项目属性中)。这当然

在ocamlbuild模式下使用时遇到问题。我正试图整理我自己的资料。根据(页面底部),要将ocamlbuild与JoCaml一起使用,我只需要将
-use-JoCaml
参数添加到ocamlbuild。事实上,如果我深入到我的项目的根本并写

ocamlbuild-使用jocaml foo.native

它可以生成我的可执行文件

然而,在OcaIDE中,我得到了

/bin/sh:jocamdep:未找到命令

在OcaIDE中,
-use jocaml
标志被传递到“其他标志”框中(在项目属性中)。这当然是有效的,因为投诉恰恰是它没有找到jocaml的东西。令人费解的是,安装了jocaml,可以从任何随机终端窗口访问它。例如,跑步

jocamdep-modules foo.ml>foo.ml.dependens

在我的项目上,确实生成了所需的依赖项文件

所以,似乎我必须配置OcaIDE并告诉它JoCaml可执行文件在哪里或其他什么地方。例如,这是为OCaml完成的。但JoCaml没有这样做的地方。而且真的很奇怪,如果从任何地方都可以访问jocamdep/jocamlc/etc,OcaIDE将无法选择它们

有什么想法吗


(我知道我可以做一个ocamlbuild插件,并在“myocamlbuild.ml”中传递标志)在我熟悉ocamlbuild插件之后,我可能会在后期使用它。但这里的问题是关于OcaIDE的。编辑:实际上,ocamlbuild插件似乎不是一个解决方案,尽管在ocamlbuild中有一个选项
-使用jocaml
,以强制使用jocaml(而且效果很好),插件系统不支持它,即使用_jocaml(或涉及jocaml的内容)不在列表中。

在ocamlbuild项目上启动构建时,OcaIDE调用:

ocaml.exec.ExecHelper#execMerge
它创建一个新的java.lang.ProcessBuilder,并使用其默认环境(
ProcessBuilder#environment()

为了帮助调试问题,请在Eclipse中运行以下Java程序:

public static void main(String[] args) {
    Map<String, String> environment = new ProcessBuilder().environment();
    for (Entry<String, String> entry : environment.entrySet()) {
        if ("path".equalsIgnoreCase(entry.getKey())) {
            System.out.println("PATH = " + entry.getValue());
        }
    }
}

如果您已经编译了自己的JoCaml,它可能不在您的
$PATH
中,或者更准确地说,不在OcaIDE中的
$PATH
中。我不确定您所说的“OcaIDE中的$PATH”是什么意思。有一个对话框编辑器来设置路径,但它只用于OCaml内容,不用于JoCaml。Eclipse正在运行一个调用
jocamdep
的shell脚本。如果这不起作用,但是从shell提示符调用
jocamdep
可以起作用,最可能的解释是OcaIDE或者您已经更改了
PATH
环境变量。
jocamdep
在哪个目录中?您能否确认OcaIDE(或者可能是一般的Eclipse)在其
路径中有这个目录?我不知道在OcaIDE或Eclipse上设置$PATH环境变量的方法。正如我所提到的,OcaIDE有一个对话框窗口来设置路径,但是仅仅针对OCaml(而不是JoCaml),在Eclipse中找不到任何方法来编辑路径。但是,同样,了解您在哪里安装了JoCaml可能会很有用。
type jocamdep
显示什么(在终端中键入)?如果它不是
/usr/bin/jocamdep
/usr/local/bin/jocamdep
,您是如何将该目录添加到您的
路径的?@teraok非常感谢。这真的很有帮助。我已经编辑了您的答案(希望没问题),以获得完整的Java类(importmap和class语句),并将条目更改为Map.Entry进行编译。现在,运行此命令的结果产生了
PATH=/usr/bin:/bin:/usr/sbin:/sbin
。所以,是的,问题是Eclipse环境没有我需要的路径中的
/usr/local/bin/
。两个选项:(1)在Eclipse中更改路径(不知道如何做,这将是我的首选);(2) 在
/usr/bin
中放置指向
jocaml
工具的链接(unix
ln
)(这样做了,现在工作正常)。非常感谢@好的,如果您知道如何更改Eclipse路径,请让我知道,因为我更喜欢这样做,而不是有到JoCaml可执行文件的链接。谢谢您可以尝试创建一个脚本,用您的路径启动Eclipse(我编辑了我的答案,因为我无法正确格式化此注释中的代码)。@teraook,我知道如何在Unix中设置路径。我认为Eclipse会在其他地方设置路径,因为在terminal/bash环境中(就在运行Eclipse之前),我知道可以从任何地方访问
/usr/local/bin
,但Eclipse看不到它。如果我只是像你建议的那样在bash中设置路径,Eclipse仍然看不到
/usr/local/bin
——我删除了
/usr/bin
中的所有链接,导出了路径并运行了Eclipse,它没有再次编译,抱怨没有看到jocaml。上面的Java程序显示的与我上面的评论完全相同,我不明白为什么环境变量不能传递给Eclipse。您使用的是哪种操作系统?
#!/bin/bash
export PATH=<your path to JoCaml>:$PATH
./eclipse