Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:在spmd中使用第三方java类_Java_Matlab_Parallel Processing - Fatal编程技术网

Matlab:在spmd中使用第三方java类

Matlab:在spmd中使用第三方java类,java,matlab,parallel-processing,Java,Matlab,Parallel Processing,我试图从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 de

我试图从
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>.
抓住我

The class "com.google.common.collect.MinMaxPriorityQueue" is undefined.
Perhaps Java is not running.
但是Java肯定在运行,因为

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

work(
ArrayPriorityComparator
/lib
中的一个独立java类)

在我看来,这就像Matlab解析
spmd
块时遇到的问题。但是我不认为我可以使用
javaObject()
javaMethod()
来解决这个问题,因为我必须调用一个静态方法来创建这个对象,而且我不能仅仅将它扔进
eval
中,因为我得到了一个
透明度冲突错误(或者,如果我把它放在
spmd
之外定义的匿名函数中,我会得到相同的
类是未定义的
错误)


有什么想法吗?欢迎使用真正的解决方案或可怕的骇客。

您是否尝试过使用
pctrunall
设置java路径


恐怕我没有一个方便的集群来测试它是否有效。

我想这是另一个“动态类路径”问题。请参阅如何使用“静态类路径”

在不依赖静态类路径的情况下,请使用以下文章中描述的方法


相同的结果(如果在匿名函数中执行,则类未定义,如果直接在
spmd
块中,则无法确定是函数还是变量)。我真的不明白为什么它会和在
spmd
块中执行
javaaddpath
有什么不同……尽管我想用matlab你永远不会知道。哦,这是值得一试的。如果你幸运的话,@EdricEllis会出现并给你正确的答案。嗯,这将是我的建议。可惜它不起作用。javaddpat他必须做一些疯狂的事情,也许这就是为什么它不起作用。
spmd (1)
   pq = java.util.PriorityQueue();
end
spmd (1)
    javaaddpath([pwd '/lib']);
    pq = ArrayPriorityComparator.create();
end