在Matlab中使用Java类

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

Mar*_*cin 6

通常我创建包含java类的jar文件.我以前加载过各个java类时也遇到了问题.在您的情况下,我在xubuntu 13.04 x64和Matlab 2013a x64上执行了以下操作来加载您的特定类:

  1. 使用java 6(不是默认值7)编译它,并选择-d .创建一组包文件夹,因为您的类定义了包org/j3d/texture/proecedural/等:

    /usr/lib/jvm/java-6-openjdk-amd64/bin/javac -d . PerlinNoiseGenerator.java 这将编译类并在当前导向器(因此.)中创建包文件夹集.

  2. 使用jarjava 6 再次制作包含您的类的jar文件.我将其命名为javaNoise.jar:

    /usr/lib/jvm/java-6-openjdk-amd64/bin/jar cf javaNoise.jar ./org/j3d/texture/procedural/PerlinNoiseGenerator.class

  3. 在Matlab中,在以下目录中javaNoise.jar:

    javaaddpath('./javaNoise.jar');

  4. 创建java类的对象:

    png=org.j3d.texture.procedural.PerlinNoiseGenerator()

    % results in: png = org.j3d.texture.procedural.PerlinNoiseGenerator@3982a033

  5. 为了测试它,我只是产生了一些1D噪音:

    png.noise1(1.2)

    ans = -0.0960

希望这可以帮助.

PS javaMethod('main','PerlinNoiseGenerator','')不会工作,因为这个类没有主要方法:-).