当使用Matlab中的java时,有没有办法弄清楚matlab的java类路径在哪里被加载?我正在尝试诊断由同时使用的同一类的冲突版本引起的错误。
具体来说,我正在寻找的类是org.apache.lucene.store.FSDirectory。它似乎被其中一个matlab工具箱使用,但我不知道哪一个。
答案 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
打印每个类的加载位置。