gpt4 book ai didi

java - Matlab:使用 spmd 中的第三方 java 类

转载 作者:行者123 更新时间:2023-11-30 04:56:39 25 4
gpt4 key购买 nike

我正在尝试使用 spmd 中第三方 Java 库中的类,但我不断收到与导入它相关的各种错误。

这是一个相当简单的示例:

spmd (1)
javaaddpath([pwd 'lib/guava-10.0.1.jar']);
import com.google.common.collect.MinMaxPriorityQueue;
pq = MinMaxPriorityQueue.create();
end

这给了我错误

??? Error: MATLAB cannot determine whether "MinMaxPriorityQueue" refers to a
function or variable.
See <a href="matlab: helpview([docroot
'/toolbox/distcomp/distcomp_ug.map'],'SPMD_LIMITATIONS')">SPMD in MATLAB,
"Limitations"</a>.

(当然,that "Limitations" document似乎没有什么特别相关的东西。)

移动javaaddpath和/或import spmd之外阻止没有帮助;无需 import 即可完成此操作但只是说 pq = com.google.common.collect.MinMaxPriorityQueue.create结果它给出了关于 com 的相同错误.

调用spmd外部定义的匿名函数 block 给出了不同的错误:

javaaddpath([pwd '/lib/guava-10.0.1.jar']);
make_pq = @() com.google.common.collect.MinMaxPriorityQueue.create();
spmd (1)
javaaddpath([pwd '/lib/guava-10.0.1.jar']);
pq = make_pq();
end

让我明白

The class "com.google.common.collect.MinMaxPriorityQueue" is undefined.
Perhaps Java is not running.

但是 Java 肯定正在运行,因为

spmd (1)
pq = java.util.PriorityQueue();
end

spmd (1)
javaaddpath([pwd '/lib']);
pq = ArrayPriorityComparator.create();
end

work( ArrayPriorityComparator./lib 中的独立 java 类)。

我觉得这就像 Matlab 解析 spmd 时出现的问题。堵塞。但我认为我不能使用 javaObject()javaMethod()要解决这个问题,因为我必须调用静态方法来创建对象,并且我不能只是将其放入 eval 中因为我得到了 Transparency violation error (或者,如果我将其放入 spmd 之外定义的匿名函数中,我会得到相同的 class is undefined 错误)。

有什么想法吗?真正的解决方案或可怕的黑客都受欢迎。

最佳答案

我想这是另一个“动态类路径”问题。引用Bringing Java Classes and Methods into MATLAB Workspace关于如何使用“静态类路径”。

如果您不依赖静态类路径,请使用以下帖子中描述的方法。

关于java - Matlab:使用 spmd 中的第三方 java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8331487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com