我正在進入Clojure和語法進化的同時發現GEVA,這是一個用Java編寫的GE工具。我沒有Java的背景。所以我不必重新發明輪子,我怎樣才能將GEVA整合到Clojure中?如何將GEVA集成到Clojure中
我可以從CLI與執行默認腳本: Java的罐子GEVA.jar -main_class Main.Run
的GEVA源目錄中有目錄的名字命名包以下子目錄: 算法COM異常FitnessEvaluation分形個人主要映射操作參數UI的Util
主子目錄有下列文件和子目錄教程: AbstractRun.java Experiment.java Run.java State.java教程
以下類是在Run.java文件: 公共類潤延伸AbstractRun 公共運行() 公共無效實驗(字串[] args) 公共無效設定(字串[] args) 私人無效過setSeed() 公共靜態無效的主要(字符串[] args)
從我可以告訴,在類Main.Run靜態方法'main'是我想執行。但是,當我嘗試遵循Java互操作指令時,出現錯誤。
clgeva.test=> (.Main.Run/main)
java.lang.Exception: No such namespace: .Main.Run (NO_SOURCE_FILE:5)
clgeva.test=> (.Main.Run/main "")
java.lang.Exception: No such namespace: .Main.Run (NO_SOURCE_FILE:6)
我顯然不能正確導入命名空間來運行主函數。
user=> (import Main)
java.lang.ClassNotFoundException: Main (NO_SOURCE_FILE:1)
user=> (import Main.Run)
Main.Run
user=> (main)
java.lang.Exception: Unable to resolve symbol: main in this context (NO_SOURCE_FILE:3)
user=> (.Main.Run/main)
java.lang.Exception: No such namespace: .Main.Run (NO_SOURCE_FILE:4)
到底什麼是我做錯了什麼?我確信我只是錯過了一些明顯的東西,但我一直在嘲弄我的頭一陣子,需要一些方向。謝謝。
這個答案提供了我所做錯誤的最接近的暗示。我正確地設置了以下類: – Nick 2010-09-16 05:55:19
這個答案提供了我所做錯誤的最接近的提示。當我在lib文件夾中輸入jar時,我正確地設置了以下代碼: (ns clgeva.test(:import Main.Run)) 當我搜索(ns-imports * ns *),我發現'Run Main.Run',表示該類被導入爲Run。 所以當我跑(運行/主「」),我得到了一個classCastException錯誤,這表明我是在正確的道路上。用下面的代碼解決這個問題(運行/ main(into-array [「」]))讓代碼按預期執行。 謝謝大家的幫助! – Nick 2010-09-16 06:00:38