Lit*_*ate 3 java matlab class path
我已经在这个问题上苦苦挣扎了两天,而且我发现没有任何资源可以解决它.
我试图从Matlab(版本7.13.0.564(R2011b))调用java类(在底部添加链接).我已经使用java 1.6将java类编译成.class文件,并使用javaaddpath添加了文件所在文件夹的路径(我当然检查了动态路径列表中的路径是否正确).但是,当我尝试使用javaMethod('main','PerlinNoiseGenerator','')从Matlab调用该类时,我得到错误:
"没有类PerlinNoiseGenerator可以位于Java类路径上"
如果有经验从Matlab调用java的人能够对如何做到这一点进行简短的讨论,我将非常感激.我可能会分发我的代码,所以我需要动态设置java路径,从我读过的内容它应该是可能的,尽管我已经看过帖子,表明它可能是问题的原因.
http://svn.j3d.org/code/tags/Xj3D-M10/src/java/org/j3d/texture/procedural/PerlinNoiseGenerator.java
通常我创建包含java类的jar文件.我以前加载过各个java类时也遇到了问题.在您的情况下,我在xubuntu 13.04 x64和Matlab 2013a x64上执行了以下操作来加载您的特定类:
使用java 6(不是默认值7)编译它,并选择-d .创建一组包文件夹,因为您的类定义了包org/j3d/texture/proecedural/等:
/usr/lib/jvm/java-6-openjdk-amd64/bin/javac -d . PerlinNoiseGenerator.java
这将编译类并在当前导向器(因此.)中创建包文件夹集.
使用jarjava 6 再次制作包含您的类的jar文件.我将其命名为javaNoise.jar:
/usr/lib/jvm/java-6-openjdk-amd64/bin/jar cf javaNoise.jar ./org/j3d/texture/procedural/PerlinNoiseGenerator.class
在Matlab中,在以下目录中javaNoise.jar:
javaaddpath('./javaNoise.jar');
创建java类的对象:
png=org.j3d.texture.procedural.PerlinNoiseGenerator()
% results in: png = org.j3d.texture.procedural.PerlinNoiseGenerator@3982a033
为了测试它,我只是产生了一些1D噪音:
png.noise1(1.2)
ans = -0.0960
希望这可以帮助.
PS
javaMethod('main','PerlinNoiseGenerator','')不会工作,因为这个类没有主要方法:-).