我正在尝试在 CLR 上运行 Clojure,但遇到了一些基本问题。基于这个问题,我正在使用以下代码:
在 program.clj 中:
(ns program
(:require [clojure.core])
(:gen-class
:methods [#^{:static true} [output [int int] int]]))
(defn output [a b]
(+ a b))
(defn -output [a b]
(output a b))
(defn -main []
(println (str "(+ 5 10): " (output 5 10))))
然后在 Program.cs 中:
using System;
using clojure.lang;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
program p = new program();
System.Console.WriteLine(p.output(5, 9));
System.Console.ReadLine();
}
}
}
当我运行 Program.cs 时,它会引发 TypeInitializationError 错误消息“无法在加载路径上找到 clojure/core.clj.dll 或 clojure/core.clj”。为了调试,我添加了以下行:
System.Environment.SetEnvironmentVariable("clojure.load.path", "c:\clojure");
System.Console.WriteLine(System.Environment.GetEnvironmentVariable("clojure.load.path"));
System.Console.WriteLine(RT.CLOJURE_LOAD_PATH);
正如我所料,第一个 WriteLine 显示“c:\clojure”。第二个显示“clojure.load.path”。我的理解是运行时查看加载路径的环境变量。那么为什么找不到呢?如何设置加载路径?