2

私は elpa 経由でインストールされた swank-clojure を喜んで使用しています。しかし、clojure 1.1 では利用できない deftype や defprotocol などでいくつかの作業を行いたいと考えています。

独自のクラスパスを使用するには、カスタム クラスパスの設定に関する stackoverflow の質問で Rick Moynihan による優れた提案を使用しています。これは、次のようなスクリプトを設定することでした。

#!/bin/bash 

java -server -cp "./lib/*":./src clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))"

そして、lib の clojure jar ファイルが 1.1 の場合は問題なく動作しますが、1.2 の場合は爆発します。

Exception in thread "main" java.lang.NoSuchMethodError: clojure.lang.RestFn.<init>(I)V (macroexpand.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:5274)
    at clojure.lang.Compiler.load(Compiler.java:5663)
    at clojure.lang.RT.loadResourceScript(RT.java:330)
    at clojure.lang.RT.loadResourceScript(RT.java:321)
    at clojure.lang.RT.load(RT.java:399)
    at clojure.lang.RT.load(RT.java:371)
    at clojure.core$load__5663$fn__5671.invoke(core.clj:4255)
    at clojure.core$load__5663.doInvoke(core.clj:4254)
    at clojure.lang.RestFn.invoke(RestFn.java:409)
...and many, many more

では、これを機能させるための魔法の呪文があるのでしょうか、それとも clojure 1.2 との互換性はまだないのでしょうか?

4

3 に答える 3

3

ここでの問題は、前述のとおりです。どうやら、clojure-contrib と同期していない Clojure を実行しているようです。使用している clojure-contrib jar に対してビルドされた Clojure のビルドをビルド/使用する必要があります。そうしないと、このエラーが引き続き表示されます。少なくとも、この特定のエラーの原因となることがわかっているのはこれだけです。

しばらく前にこれを理解しようとして自分を撃ちそうになりました。これで問題が解決したことを願っています。

于 2010-04-08T07:49:06.970 に答える
2

はい、可能です。同じフォルダーに不一致の clojure contrib jar がないことを確認してください。1.1 からの clojure contrib と、clojure jar 1.2 スナップショットがありました。

于 2010-04-08T02:14:56.783 に答える
0

emacs、swank、clojure、maven は今でも友達です。

私のこのブログ投稿では、Linux で動作するおしゃれなサーバーを取得する最も簡単な方法について説明しています。基本的に、pom ファイルを作成し、すべてのバージョン管理の問題を処理する maven を実行します。

http://learnclojure.blogspot.com/2010/03/clojure-maven-emacs-eternal-golden.html

compojure を追加する方法を示すフォローアップ投稿もありました。

そして、これはmavenのバージョンプラグインを使用して、すべての最新バージョンを見つけて使用し、incanterを追加することを説明しています:

http://learnclojure.blogspot.com/2010/08/returning-after-long-absence.html

すべてが今でも美しく機能します。

ELPA は、最近 emacs にスライムをインストールする最良の方法のようです。

于 2010-08-23T12:38:45.937 に答える