t100のプログラミング脱出作戦

自分のプログラミング脳をプログラムにして、いつかプログラミングから脱出してやるぞっ!とか夢見ながら、日々プログラム作っていく 百野 貴博 の日記です!今は、屋号『百蔵。』として、Silverlight・WPFを追跡中です! (2007/09/30)
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 | トラックバック(-) | コメント(-) top↑
clojureでクラスパスにないファイルを実行する
clojure で、クラスパスに指定していないファイルをダイナミックにロードしてみます!


これは、planetclojure というtwitterアカウントでつぶやかれていた内容です。

How do I dynamically load a Clojure script from outside of my classpath from java?

試してガッテン!!(゚∀゚)

今回は簡単に、Hello Clojure というメッセージを表示する関数を定義したファイルをREPLから動的に読み込んでみます。

まずは、動的に読み込むファイルを作りましょう。
今回は、c:\clojure\helloFn.clj ファイルを作りました。

中身は下記です。

(defn helloFn []
  (println "hello clojure"))




では、REPLを起動します。

C:\clojure>java -cp clojure.jar clojure.main
Clojure 1.1.0
user=>



この段階で、helloFn 関数を実行してみます。

user=> (helloFn)
java.lang.Exception: Unable to resolve symbol: helloFn in this context (NO_SOURC
E_FILE:1)



当たりまえだのシンボル無いですエラー。

次に、記事にあった clojure.lang.Compiler の loadFile メソッドで先ほど作った helloFn.clj を読み込んでみます。

user=> (. Compiler loadFile "c:\\clojure\\hello.clj")
nil
nil



特にエラーにならなかったので成功したみたい?
再度、helloFn 関数を実行してみます。

user=> (helloFn)
hello clojure
nil




お。でたっ!!

実行できた!!


大成功~(*´д`*)















管理者にだけ表示を許可する


トラックバックURL:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。