问题标签 [gen-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
538 浏览

clojure - 使用 :gen-class 扩展一个暴露其裸字段的类

假设有一个 Java 类没有为它的所有字段提供 getter 和 setter,我必须用它们来扩展:gen-class和摆弄它们。

如何访问超类字段?

我现在想到的最快(也许是最干净的......)解决方案是创建一个扩展我的超类的 java 类,并改为扩展它,但我想知道是否有一个听起来更直接的替代方案。

谢谢!

0 投票
1 回答
176 浏览

clojure - 是否可以使用私有最终字段进行生成类?

如何在 Clojure 中创建具有私有 final 字段的 Java 类?

gen-class 的ClojureDocs说该state字段将是公开的

:州名

如果提供,将创建一个具有给定名称的公共最终实例字段。

那么,换句话说,我们是否有办法创建一个类,然后创建一个具有封装状态的 java 对象?

0 投票
1 回答
644 浏览

clojure - gen-class 不生成类

我在引用通过:gen-class.

我可以展示的最小示例是:


问题是,这会ClassNotFoundException在标记线上产生一个。

(我尝试了上述文件-和.围绕那个,我需要下划线来引用。)_project.clj-maintest_proj.test

如果我进入项目根文件,没有target文件夹,所以它不会生成类。如果我进入终端并运行lein compile,它会在 下生成所需的类target,并且上面的代码运行没有错误。这是一个糟糕的解决方法。如果我修改文件并忘记手动重新编译它怎么办?在我每次执行clean.

作为在黑暗中的镜头,我尝试在宏compile下方使用:ns

如果我使用破折号,compile似乎什么都不做。我可能会误解它的用法,但它不会在target. 如果我使用下划线,它会给出一个异常,指出找不到命名空间。

有没有办法让类自动生成,所以我不需要lein compile每次都运行?我认为这就是:aotin theproject.clj所做的。

0 投票
2 回答
70 浏览

android - 在 Clojure 中创建 Android 服务

我有一个相当简单的应用程序,它是用 Clojure 编写的,并希望定期自动执行其中一个功能。我正在尝试使用 AndroidAlarmManager来安排任务。这是我到目前为止所拥有的:

Android 的参考文档在此处输入链接描述

我自己在 Clojure 中的进步:

我想我误解了一些微妙的东西;在评估第一个 sexp 之后,符号adamdavislee.mpd.Service未绑定,符号 也未绑定superIntentService

0 投票
1 回答
132 浏览

java - 具有需要枚举参数的注释的 clojure gen-class

我想编写一个 clojure lib 并公开生成的类,以便其他 java 项目可以使用它。我阅读并遵循了 gen-class 文档,一切都按我的预期工作,除了带有枚举参数的类注释。

该异常类生成时没有任何错误,也可以用作Exception. 但是,此异常旨在与 spring web 一起用作 http 响应。spring框架读取注解,发现是HttpStatus/UNAUTHORIZED响应401,但是spring框架抛出异常,报错java.lang.EnumConstantNotPresentException: org.springframework.http.HttpStatus

我查看了生成的类,它是这样的:

如图所示,HttpStatus/UNAUTHORIZED编译成HttpStatus.401哪个无效。

我也试过了{:code org.springframework.http.HttpStatus/UNAUTHORIZED}{:value org.springframework.http.HttpStatus/UNAUTHORIZED}可以编译成@ResponseStatus(code/value = HttpStatus.401),但是枚举值本身还是无效的形式HttpStatus.401

我是否以错误的方式对 gen-class 使用类注释?或者只是 Clojure 编译器有这个错误?

PS 尝试使用 Clojure 1.9、1.10、1.10.1

0 投票
2 回答
276 浏览

clojure - 如何在 repl 和/或测试中编译和使用用 gen-class 定义的类?

Clojure 菜鸟。我无法获得:gen-class工作的基本示例。

我已经尝试了:aotin 的选项project.clj并运行lein compile以在 中生成类target/default,但我得到了同样的错误。

什么是定义 Java 类的正确方法gen-class,然后在 repl 中与我的项目代码的其余部分一起使用它,或者我可以运行的测试是lein test什么?