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 を実行すると、「ロード パスに clojure/core.clj.dll または clojure/core.clj が見つかりませんでした」というエラー メッセージとともに TypeInitializationError がスローされます。デバッグするために、次の行を追加しました。
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」が表示されます。2 つ目は「clojure.load.path」を示しています。私の理解では、ランタイムはロード パスの環境変数を参照していました。では、なぜ見つからないのでしょうか。他にどのようにロード パスを設定しますか?