我正嘗試在Clojure中編寫JavaFX應用程序。作爲一個簡單的測試,我想嘗試啓動一個Hello World。要延長Application
,我決定嘗試使用proxy
而不是:gen-class
。我希望能夠創建一個創建Application
的簡單函數,而不是每次都要求我寫樣板。創建JavaFX代理會導致UnsupportedOperationException
我想出了一個簡單的例子是:
(let [^Application app
(proxy [Application] []
(start [self stage] (println "Hello World")))]
(Application/launch ^Class (.getClass app)
(into-array String [])))
的問題是,這會導致UnsupportedOperationException
:
UnsupportedOperationException異常啓動chat.graphics_tests.javafx_wrapper.proxy $ javafx.application.Application $ ff19274a.start(:-1)
它似乎找不到start
方法t我實施的帽子。我的第一個想法是,start
的論點是錯誤的。他們似乎是正確的。它收到的第一個參數是「this
」,然後是主要階段。儘管我嘗試了不同數量的參數,但我仍然得到相同的錯誤。根據文檔:
如果接口方法不提供一種方法,FN,一個 則將拋出UnsupportedOperationException它應該是 調用。
更進一步我這個懷疑。
錯誤很模糊。有沒有人看到問題是什麼?
我剛剛讀到'proxy'不能用在這裏,因爲'Application/launch'需要一個命名類。猜猜我正在使用':gen-class'。 – Carcigenicate