创建JavaFX代理会导致不支持的操作异常
我正在尝试用Clojure编写一个JavaFX应用程序。作为一个简单的测试,我想尝试启动一个Hello World。为了扩展创建JavaFX代理会导致不支持的操作异常,javafx,clojure,Javafx,Clojure,我正在尝试用Clojure编写一个JavaFX应用程序。作为一个简单的测试,我想尝试启动一个Hello World。为了扩展应用程序,我决定尝试使用代理,而不是:gen class。我希望能够创建一个简单的函数来创建应用程序,而不是每次都要求我编写样板文件 我举了一个简单的例子: (let [^Application app (proxy [Application] [] (start [self stage] (println "Hello World")))]
应用程序
,我决定尝试使用代理
,而不是:gen class
。我希望能够创建一个简单的函数来创建应用程序
,而不是每次都要求我编写样板文件
我举了一个简单的例子:
(let [^Application app
(proxy [Application] []
(start [self stage] (println "Hello World")))]
(Application/launch ^Class (.getClass app)
(into-array String [])))
问题是,这会导致不支持操作异常
:
UnsupportedOperationException start chat.graphics_tests.javafx_wrapper.proxy$javafx.application.application$ff19274a.start(:-1)
似乎找不到我实现的start
方法。我的第一个想法是start
的参数是错误的。不过,它们似乎是正确的。它收到的第一个参数是“this
”,然后是主阶段。虽然我尝试了不同数量的参数,但仍然得到相同的错误。根据文件:
如果没有为接口方法提供方法fn,则
UnsupportedOperationException将被抛出
打电话来
这进一步加深了我的这种怀疑
这些错误相当模糊。有人知道问题出在哪里吗?在Clojure中编写类定义时,方法签名中不需要显式的self
参数。当前实例将隐式绑定到此,您可以在方法内部使用该
因此,您的代理调用应该如下所示:
(proxy [Application] []
(start [stage] (println "Hello World")))
在Clojure中编写类定义时,方法签名中不需要显式的self
参数。当前实例将隐式绑定到此,您可以在方法内部使用该
因此,您的代理调用应该如下所示:
(proxy [Application] []
(start [stage] (println "Hello World")))
(见答案底部的评论。我相信@Sam)
我最终放弃并使用了:gen class
,并在做了一些修改后使其正常工作。(请参阅答案底部的注释。我相信@Sam)
我最终放弃并使用了
:gen类
,并在做了一些修改后使其工作。我刚刚读到代理
不能在这里使用,因为应用程序/启动
需要一个命名类。我想我使用的是:gen类
。我刚读到代理
不能在这里使用,因为应用程序/启动
需要一个命名类。我想我使用的是:gen class
。不,同样的错误。正如我所说,我尝试了许多不同的论点组合。而且,正如我在回答下面的评论中提到的,我后来读到,proxy
不能在这里使用。我决定不提这个问题,以防其他人试图使用proxy
。我怀疑他们会收到同样的错误信息。不,同样的错误。正如我所说,我尝试了许多不同的论点组合。而且,正如我在回答下面的评论中提到的,我后来读到,proxy
不能在这里使用。我决定不提这个问题,以防其他人试图使用proxy
。我怀疑他们会收到同样的错误信息。