问题标签 [java-interop]
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.
java - 将静态 windows 库转换为 dll
我有一个包含一堆静态*lib
文件的库,我希望从中访问它们JNA
(一个允许从 JAVA 代码动态调用 `dll's 的 Java 库),那么有没有办法神奇地将静态库更改为 dll?
代码是使用 Visual Studio 编译的(希望是相关的),我也有适当的头文件。
我无权访问源代码,我也想只使用免费(如啤酒)工具来完成它。
clojure - 当您在 Clojure 中扩展一个 Java 类并定义一个与该类中同名的方法时,会发生什么?
我一直在阅读 Programming Clojure,并且在理解 Stuarts 的主要 Java Interop 示例时遇到了一些麻烦。他扩展了 DefaultHandler,并创建了一个 startElement 方法,然后将该处理程序传递给 XML 解析器。我不明白的是,到底发生了什么。他的 startElement 实现是否覆盖了 DefaultHandler 中定义的实现?我很困惑。我没有使用 Java 的经验,也没有什么面向对象的经验。
谢谢!
clojure - 在 Clojure 中调用 getCodeBase 时遇到问题
我正在尝试使用我找到的一些资源编写一个播放声音文件的函数。代码如下:
问题是, (.getCodeBase) 是格式错误的成员表达式。我不知道该怎么办。你如何调用这样的方法?在我查看的 Java 代码中,它的调用方式如下:
我错过了什么吗?
import - Clojure 是否有等效于 Java 的导入包。*?
还是我必须专门列举我导入的每个类?
我现在正在学习 Clojure,能够在 REPL 中做这样的事情似乎很有用:
并不是说这是有效的语法,但如果有类似的东西会很好。它会节省一些打字,尤其是在修补时。在实际的生产代码中,我总是枚举我正在导入的每个类,不管语言如何,但不必这样做非常方便。
clojure - 如何将 Java 类中的“静态 final”常量拉入 Clojure 命名空间?
我正在尝试使用 Clojure 绑定包装 Java 库。Java 库中的一个特定类定义了一堆静态最终常量,例如:
我有一个想法,我可能能够检查该类并将这些常量拉入我的 Clojure 命名空间,而无需显式地对def
每个常量进行 -ing。
例如,不要像这样显式地连接它:
加载模块时,我将能够检查Foo
该类并在我的 Clojure 命名空间中动态foo-bar
连接foo-some-constant
。
我看到这样做的两个原因:
A) 在新常量添加到Foo
类时自动引入它们。换句话说,在 Java 接口添加新常量的情况下,我不必修改 Clojure 包装器。
B)我可以保证常量遵循更 Clojure 风格的命名约定
我并没有真正喜欢这样做,但问这个问题似乎是一个很好的问题,可以扩展我对 Clojure/Java 互操作的了解。
谢谢
servlets - 如何定义实现 servlet 接口的 clojure 类型?
我正在尝试使用 deftype(来自最前沿的 clojure 1.2 分支)来创建一个实现 java Servlet 接口的 java 类。我希望下面的代码能够编译(即使它不是很有用)。
但它不编译。编译器产生消息:
这对我来说没有意义,因为我返回零。因此,该方法的返回类型为 void 的事实应该不是问题。例如,对于 java.util.Set 接口:
编译没有问题。
那么我在 Servlet 接口上做错了什么?
需要明确的是:我知道典型的情况是子类化一个 servlet 抽象类,而不是直接实现这个接口,但应该仍然可以这样做。
堆栈跟踪:
(deftype servlet... 的堆栈跟踪是:
.net - .NET 中的 MPXJ 将 java Date 转换为 .NET DateTime
我正在使用 .NET 中的 MPXJ 库来解析 MS Project (MPP) 文件,它运行良好。我遇到的一个问题是尝试将任务开始和完成日期转换为 .NET DateTime 以与我的数据模型一起使用。
我正在完成所有任务并调用 task.getFinish() 和 task.getStart() 两者都返回 java.util.Date 对象。
当我使用 task.getFinish().getYear()、task.getFinish().getMonth() 等来构建新的 DateTime 对象时,它会警告我它们已过时。
将 MPXJ 的开始日期和结束日期转换为 .NET DateTime 对象的最佳方法是什么?
谢谢。
clojure - Clojure 的 :gen-class 和 double 数组
我正在尝试 :gen-class 一个 fn,它将一个二维数组作为输入。我已经在这里看到了关于类似主题的帖子和解决方案,但我仍然无法产生有效的解决方案。
我在我的输入"[[D"
上使用基于使用。type
这可以很好地编译成 .class 文件。
现在,当我移动到另一个 .clj 文件时,我有以下内容。
当我bar
从 repl 调用时,我收到以下错误:
java.lang.IllegalArgumentException:未找到匹配字段:类的 heat_map2 [[D
有什么想法吗?
scala - 从 Scala 调用 Java:受保护的构造函数
这在 Scala 2.8.0 final 上编译没有错误:
但是,在执行时我得到:
这是错误、功能还是已知限制?
java - 您如何在 Clojure 中引用原始 Java 类型?
我想使用反射从 Clojure 获取 Java 对象的方法。其中一种参数类型是 Java 原语,我不知道如何从 Clojure 中引用它们。
例如,假设我想获得String.valueOf(boolean)
. 我最接近的猜测是
但这失败了,因为Boolean
不是原始类型本身,而是盒装版本。我试过boolean
了,但这指的是内置的 Clojure 函数,并且bool
是未定义的。
如何在 Clojure 中引用原始 Java 类型?