确定Matlab加载的java类的位置

时间:2009-07-14 18:33:41

标签: java matlab classpath

当使用Matlab中的java时,有没有办法弄清楚matlab的java类路径在哪里被加载?我正在尝试诊断由同时使用的同一类的冲突版本引起的错误。

具体来说,我正在寻找的类是org.apache.lucene.store.FSDirectory。它似乎被其中一个matlab工具箱使用,但我不知道哪一个。

5 个答案:

答案 0 :(得分:8)

来自http://www.exampledepot.com/egs/java.lang/ClassOrigin.html

// Get the location of this class
  Class cls = this.getClass();
 ProtectionDomain pDomain = cls.getProtectionDomain();
  CodeSource cSource = pDomain.getCodeSource();
  URL loc = cSource.getLocation();  // file:/c:/almanac14/examples/

答案 1 :(得分:2)

假设正在使用URLClassLoader,您可以像这样获取类文件的file:网址:

ProblemClass.class.getResource("ProblemClass.class")

答案 2 :(得分:1)

PerThorbjørnRavnAndersen,如果j引用了Matlab中的java对象,可以使用以下matlab代码行检索其位置:

j.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()

答案 3 :(得分:0)

使用inmem函数,如下所示:

[M,X,J] = inmem

此函数返回输出参数J中的Java类列表。(它还返回M中所有当前加载的M文件的名称,以及X中所有当前加载的MEX文件的名称。)

以下是inmem函数的输出示例:

[m,x,j] = inmem;

MATLAB显示:

j = 
    'java.util.Date'
    'com.mathworks.ide.desktop.MLDesktop'

答案 4 :(得分:0)

从1.5开始使用:

java -verbose:class 

打印每个类的加载位置。