问题标签 [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.

0 投票
3 回答
9111 浏览

java - 将静态 windows 库转换为 dll

我有一个包含一堆静态*lib文件的库,我希望从中访问它们JNA(一个允许从 JAVA 代码动态调用 `dll's 的 Java 库),那么有没有办法神奇地将静态库更改为 dll?

代码是使用 Visual Studio 编译的(希望是相关的),我也有适当的头文件。

我无权访问源代码,我也想只使用免费(如啤酒)工具来完成它。

0 投票
2 回答
2484 浏览

clojure - 当您在 Clojure 中扩展一个 Java 类并定义一个与该类中同名的方法时,会发生什么?

我一直在阅读 Programming Clojure,并且在理解 Stuarts 的主要 Java Interop 示例时遇到了一些麻烦。他扩展了 DefaultHandler,并创建了一个 startElement 方法,然后将该处理程序传递给 XML 解析器。我不明白的是,到底发生了什么。他的 startElement 实现是否覆盖了 DefaultHandler 中定义的实现?我很困惑。我没有使用 Java 的经验,也没有什么面向对象的经验。

谢谢!

0 投票
1 回答
440 浏览

clojure - 在 Clojure 中调用 getCodeBase 时遇到问题

我正在尝试使用我找到的一些资源编写一个播放声音文件的函数。代码如下:

问题是, (.getCodeBase) 是格式错误的成员表达式。我不知道该怎么办。你如何调用这样的方法?在我查看的 Java 代码中,它的调用方式如下:

我错过了什么吗?

0 投票
3 回答
3593 浏览

import - Clojure 是否有等效于 Java 的导入包。*?

还是我必须专门列举我导入的每个类?

我现在正在学习 Clojure,能够在 REPL 中做这样的事情似乎很有用:

并不是说这是有效的语法,但如果有类似的东西会很好。它会节省一些打字,尤其是在修补时。在实际的生产代码中,我总是枚举我正在导入的每个类,不管语言如何,但不必这样做非常方便。

0 投票
3 回答
2205 浏览

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 互操作的了解。

谢谢

0 投票
1 回答
1982 浏览

servlets - 如何定义实现 servlet 接口的 clojure 类型?

我正在尝试使用 deftype(来自最前沿的 clojure 1.2 分支)来创建一个实现 java Servlet 接口的 java 类。我希望下面的代码能够编译(即使它不是很有用)。

但它不编译。编译器产生消息:

这对我来说没有意义,因为我返回零。因此,该方法的返回类型为 void 的事实应该不是问题。例如,对于 java.util.Set 接口:

编译没有问题。

那么我在 Servlet 接口上做错了什么?

需要明确的是:我知道典型的情况是子类化一个 servlet 抽象类,而不是直接实现这个接口,但应该仍然可以这样做。

堆栈跟踪:

(deftype servlet... 的堆栈跟踪是:

0 投票
2 回答
2586 浏览

.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 对象的最佳方法是什么?

谢谢。

0 投票
2 回答
876 浏览

clojure - Clojure 的 :gen-class 和 double 数组

我正在尝试 :gen-class 一个 fn,它将一个二维数组作为输入。我已经在这里看到了关于类似主题的帖子和解决方案,但我仍然无法产生有效的解决方案。

我在我的输入"[[D"上使用基于使用。type这可以很好地编译成 .class 文件。

现在,当我移动到另一个 .clj 文件时,我有以下内容。

当我bar从 repl 调用时,我收到以下错误:

java.lang.IllegalArgumentException:未找到匹配字段:类的 heat_map2 [[D

有什么想法吗?

0 投票
1 回答
939 浏览

scala - 从 Scala 调用 Java:受保护的构造函数

这在 Scala 2.8.0 final 上编译没有错误:

但是,在执行时我得到:

这是错误、功能还是已知限制?

0 投票
2 回答
1004 浏览

java - 您如何在 Clojure 中引用原始 Java 类型?

我想使用反射从 Clojure 获取 Java 对象的方法。其中一种参数类型是 Java 原语,我不知道如何从 Clojure 中引用它们。

例如,假设我想获得String.valueOf(boolean). 我最接近的猜测是

但这失败了,因为Boolean不是原始类型本身,而是盒装版本。我试过boolean了,但这指的是内置的 Clojure 函数,并且bool是未定义的。

如何在 Clojure 中引用原始 Java 类型?