EclipseFP正在寻找GHC并找不到它

我在Windows 8.1 x64下运行Eclipse(Kepler Service Release 2)+ EclipseFP(2.6.0)+ Haskell Platform。 在安装一些cabal之后的一会儿,EclipseFP停止工作并向我展示:

该程序ghc版本> = 6.4是必需的,但无法找到。

我有:

  • 卸载Haskell平台
  • 已删除C: Users myuser AppData Roaming cabal *
  • 已删除的C: Program Files文件(x86) Haskell *
  • 安装Haskell平台2013.2
  • 用我的Haskell工作区运行Eclipse
  • 尝试构建我的项目
  • 它给了我关于ghc的这个错误,并且不能构建它。
  • EclipseFP配置发现所有Haskell助手可执行文件。 它已经发现了Cabal 1.16.0.2和GHC 7.6.3。 从命令行GHC和cabal被发现并正在工作。 “cabal build”也在从命令行开始执行该项目。

    这个消息几乎没有说什么! 如果我能看到它正在寻找GHC的路径或从哪里得到这条路径......

    编辑:来自buildwrapper的消息:

    “C: Users home AppData Roaming cabal bin buildwrapper.exe synchronize --force = false --tempfolder = .dist-buildwrapper --cabalpath = C: Program Files(x86) Haskell Platform 2013.2 .0.0 lib extralibs bin cabal.exe --cabalfile = D: Project haskell2 SomeGL SomeGL.cabal --cabalflags = --logcabal = true
    因为setup_config不存在而进行配置
    “C: Program Files(x86) Haskell Platform 2013.2.0.0 lib extralibs bin cabal.exe”“configure”“--verbose = 1”“--user”“--enable-tests”“ --enable-benchmarks“”--builddir = D: Project haskell2 SomeGL.dist-buildwrapper dist“cabal.exe:程序ghc版本> = 6.4是必需的,但它无法找到。”

    正确调用cmd.exe的最后一行(与普通的非管理用户一样),一切工作正常:

    "C:Program Files (x86)Haskell Platform2013.2.0.0libextralibsbincabal.exe" "configure" "--verbose=1" "--user" "--enable-tests" "--enable-benchmarks" "--builddir=D:Projecthaskell2SomeGL.dist-buildwrapperdist"
    

    编辑:找到使用的潜在路径environement我试图在Eclipse内部运行GHCi控制台,并尝试:

    import System.Environment
    x <- getEnvironment
    filter ( (a,_) -> a == "Path") x
    

    并得到了一些开始:

    C: Program Files(x86) Haskell Platform 2013.2.0.0 lib extralibs bin; C: Program Files(x86) Haskell Platform 2013.2.0.0 bin; ...“)]

    第一个文件夹无效,但Haskell平台有效且正在工作。 我发现的另一件事。 有一次我运行“Build All”命令,在Eclipse中使用GHC运行Process,路径为:

    运行可执行文件C: Program Files(x86) Haskell Platform 2013.2.0.0 bin ghc.exe

    我去看看这个流程细节,它是从当前Eclipse运行的同一个用户运行的。 路径是正确的,但我仍然有错误:

    该程序ghc版本> = 6.4是必需的,但无法找到。

    从命令行运行仍然有效。 该程序有错误,但只在命令行中看到它们。

    有人可以帮助找到这个问题吗?

    编辑:我发现了一些有趣的问题。 运行“Build All”命令执行此命令:

    C: Users myuser AppData Roaming cabal bin buildwrapper.exe synchronize --force = false --tempfolder = .dist-buildwrapper --cabalpath = C: Program Files(x86) Haskell Platform 2013.2。 0.0 lib extralibs bin cabal.exe --cabalfile = D: haskell SomeGL SomeGL.cabal --cabalflags = --logcabal = true

    从命令行运行会导致错误。 问题是cabalpath周围没有引号,因为它里面有空格。 当我从命令行以这种方式运行时,它可以工作:

    C:UsersmyuserAppDataRoamingcabalbinbuildwrapper.exe synchronize --force=false --tempfolder=.dist-buildwrapper --cabalpath="C:Program Files (x86)Haskell Platform2013.2.0.0libextralibsbincabal.exe" --cabalfile=D:haskellSomeGLSomeGL.cabal --cabalflags= --logcabal=true
    

    我认为所有“--cabalfile”参数都应该有引号,因为路径中可能有空格。 我仍然不知道这是Eclipse下的问题。


    我发现了问题!

    它是EclipseFP 2.6.0使用大写“PATH”变量,但是我的Windows 8.1使用“Path”并且在编程上某种类型,当执行BuildWrapper和Cabal时可能有两个有效的变量“PATH”和“Path”。 所以有些东西搞乱了。

    解决此问题的方法是如果您从控制面板|重命名 系统| 用户和系统从“路径”到“路径”的环境变量。

    我希望这可以在EclipseFP中修复,以便在任何情况下在将来的工作。


    建立你的项目意味着在幕后,组建项目启动。 如果您在Haskell帮助程序可执行文件首选项页面中激活调试模式(显示BuildWrapper响应),您应该看到正在发送的确切的cabal build命令。 这可能是Eclipse中使用的路径与命令行中使用的路径不同,请检查您的eclipse快捷方式。 EclipseFP可以找到可执行文件,因为它也可以在Windows上的一些众所周知的文件夹中搜索。 你也可以从github上获取EclipseFP的当前开发版本。 它现在应该传递--with-ghc到cabal调用,以确保在Eclipse中检测到的路径是使用的路径。

    链接地址: http://www.djcxy.com/p/43403.html

    上一篇: EclipseFP is searching for GHC and cannot find it

    下一篇: Why i can't compile with GHC if code contain module definition?