2

MacOSXでnREPLをSWTで動作させることができませんでした。

問題を再現するには、次のproject.cljファイルを使用して新しいSWTプロジェクトを作成します。

(defproject swttest "0.1.0"
  :description "Foo"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.eclipse.swt/org.eclipse.swt.cocoa.macosx.x86_64 "3.8"]]
  :jvm-opts ["-XstartOnFirstThread"]
  :repositories [["swt-repo" "https://swt-repo.googlecode.com/svn/repo/"]])

次に、「leinrepl」を使用してREPLを起動します。最後に、次のコマンドを実行します。

user> (org.eclipse.swt.widgets.Display.)

次のエラーが発生します。

SWTException Invalid thread access  org.eclipse.swt.SWT.error (:-1)

どうすればこれを機能させることができますか?

4

2 に答える 2

2

解決策を見つけました。nREPLを使用する代わりに、次のように、project.cljファイルを変更して「dumbrepl」エイリアスを含めることにより、「dumb」REPLで実行します。

(defproject swttest "0.1.0"
  :description "Foo"
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.eclipse.swt/org.eclipse.swt.cocoa.macosx.x86_64 "3.8"]]
  :jvm-opts ["-XstartOnFirstThread"]
  :aliases {"dumbrepl" ["trampoline" "run" "-m" "clojure.main/main"]}
  :repositories [["swt-repo" "https://swt-repo.googlecode.com/svn/repo/"]])

次に、以下を実行します。

> lein dumbrepl
于 2012-12-26T22:49:47.653 に答える
1

leinコマンドラインはいくつかのjvmを開始します。最初のものだけが-XstartOnFirstThreadパラメーターで実行されます。ps -aux|grep javalein replが何をするかを実行して確認することで、それを確認できます。それがあなたの「dumbrepl」が機能する理由です。

于 2012-12-26T22:57:05.663 に答える