0
Help us understand the problem. What are the problem?

posted at

ClojureのソースをNetBeansでコンパイルしてみた

Clojureはじめたばかりの初心者です。
ソースを読むのが好きなので、自分でコンパイルしてNetBeans内で動かしてみたいなぁと思いやってみました。

JavaはJava8がインストールされている必要があります。
(ClojureのコンパイルにはJava8以上が必要との事です)
NetBeansは 12.0を使っています。

ちなみにClojureのソースをダウンロードしてきて、mavenを使ったら、簡単にコンパイルできました。しかし、それではNetBeansで、ブレークポイントをかけたり、ステップ実行をしたりできなかった(やり方がわからなかった)ので、別の方法でコンパイルしてみようと思いました。

まず、NetBeansで、File > NewProjectから、Java with Ant > Java Applicationを選択し、作成します。

Clojureの最新ソースを落としてきて、clojure-master/src/jvmの下のJavaソース一式を先ほど作成したプロジェクトのsrcディレクトリにコピーしました。
NetBeansでコンパイルしてみたら、あっさり成功。
これ意外にあっさり動くんじゃね?と思ったら、実行時エラーの連続。
かなりハマりましたが、数時間の格闘で、なんとか動く所までこぎつけました。

clojure-master/src/clojure以下のソースも、同じくNetBeansのsrcに入れる必要があります。
但し、全部の clj を 使っている訳ではなさそうです。

次に clojure-master/resources/clojure/version.properties
これも入れる必要があります。

NetBeansで実行してみると、このpropertiesを読んでいる場所で異常終了してしまいます。
施行錯誤してわかったことは、version={}と書かれている所を1.2.3のように書きかえると
正常に動くようになりました。どうも正規表現を使って、1.2.3を分解して、それぞれに対して文字列を整数型に変換しているみたいです。なので、1.2とか書いてもダメです。

この後が、大変だったのですが、spec.alphaがなんとかいうエラーに悩まされました。
Clojureのソースとはまた別の場所にspec.alphaのソースもあるので、それも追加してみましたが、実行時エラーが発生します。
途方にくれていたところ、spec.alphaをコンパイルしたjarがある事がわかりました。

<groupid>org.clojure</groupid>
<artifactId>spec.alpha</artifactId>
<version>0.3.218</version>

「mavenをjarファイルをダウンロードするだけ」に使い、jarファイルをダウンロードしてきました。
ダウンロードされた spec-alpha-0.3.218.jar をNetBeansのlibに追加してコンパイルしたところ、なんとか、clojureのプロンプトが出て REPL が動く所までできました。

これで勉強環境は出来たので、ブレークポイントかけたり、ステップ実行してソースを読んで動かしてみたいと思います。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?