我现在想做一个java调用matlab的应用,最新的matlab2007提供一个组件:builder for java,可以把matlab函数打包成.jar,供java调用,
    现在的情况是,我的一个朋友用matlab2007自带的例子(MagicSquareExample)给我做了一个magicsquare.jar包,我本机没有安装matlab,我是用myeclipse6.0开发的,用到的matlab的包就两个:magicsquare.jar和javabuilder.jar,调用matlab的例子也是他自带的,所以代码方面应该不会有什么问题,
    但是我执行以后报错了:Exception in thread "main" java.lang.UnsatisfiedLinkError: no nativemcl77 in java.library.path
    UnsatisfiedLinkError的错误是:如果 Java Virtual Machine 不能找到被声明为 native 类型的方法的本地语言的定义时抛出该类的实例。no nativemcl77 in java.library.path 这个错误就不知道怎么回事了。
    我在网上已经查了2天了,没有这方面的错误,然后我怀疑是不是还有什么matlab的包没有加进来,后来发现matlab下面有一个叫nativemc177.dll的文件,于是我强行的把这个文件拷到了window/system32/下面,结果程序报了另外一个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\nativemcl77.dll: ?0?7?0?7?0?7?0?3?0?8?0?7???0?0?0?4???0?3?0?1?0?0???0?3?0?9?0?5?0?2?0?5?0?1?0?8?0?7???0?0?0?4???ā0?2?0?5?0?4?0?0?0?9?0?4?0?3?0?5?0?0?0?1?0?4??0?5?0?4?0?8?0?7???0?0?0?4???0?7?0?7?0?2?1?5~?0?8?0?9?0?5?0?9?0?0?0?2?0?2?0?8?0?0?7?3
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.mathworks.toolbox.javabuilder.MWMCR.<clinit>(MWMCR.java:1417)
at com.mathworks.toolbox.javabuilder.MWUtil.GetUnknownClassID(MWUtil.java:1566)
at com.mathworks.toolbox.javabuilder.MWClassID.<clinit>(MWClassID.java:39)
at com.mathworks.toolbox.javabuilder.MWBuiltinArray.<init>(MWBuiltinArray.java:37)
at com.mathworks.toolbox.javabuilder.MWEmptyArray.<init>(MWEmptyArray.java:26)
at com.mathworks.toolbox.javabuilder.MWEmptyArray.<clinit>(MWEmptyArray.java:33)
at com.mathworks.toolbox.javabuilder.MWArray.<clinit>(MWArray.java:23)
at computer.service.getmagic.main(getmagic.java:35)    我实在找不到原因了,这两天正在到处下载matlab2007,看是不是没有安装的原因,但是据官方的介绍,不用安装也能调用阿,希望各位高手能帮组我找到问题的答案,非常非常感谢了!!!

解决方案 »

  1.   

    我感觉你的方向是对的,就是有些dll或者exe没有拷贝过来,你继续走。
    另外提醒一下:
    你用的JVM最好和Matlab所用的JVM版本一样。
      

  2.   

    我花了两天时间,终于把matlab2007下下来了,先前的错误不提示了,结果又出来一个错误,
    ??? Undefined function or variable 'matlabrc'.Exception: com.mathworks.toolbox.javabuilder.MWException: An error occurred while initializing the component.奇怪啊,不知道怎么回事呢
      

  3.   

    终于解决了 相当不容易啊,我把经验跟大家分享一下,希望朋友们少走弯路1.没有安装matlab2007之前,程序报错:
    Exception   in   thread   "main"   java.lang.UnsatisfiedLinkError:   C:\WINDOWS\system32\nativemcl77.dll
    我查找资料发现,如果不安装matlab,则必须要安装MATLAB Component Run-time(MCR),
    2.安装了matlab2007以后,程序还是报了一个错:
    ???   Undefined   function   or   variable   'matlabrc'. 
    Exception:   com.mathworks.toolbox.javabuilder.MWException:   An   error   occurred   while   initializing   the   component.
    我不知道这个错误的原因是什么,但是我通过以下方法解决了这个问题--第一,下载jdk1.6(和matlab2007的jdk版本一致),然后把环境变量搭好,主要是java_home和path(java_home是一定要建的,由于我用的是eclipse,所以path无所谓了),第二,新建一个系统用户(因为我当前的这个用户是用中文命名的),不要用中文命名,然后用这个用户登录,运行程序,成功了!最后再说一下,我就是因为中文用户的原因,好几天都没有调通,所以matlab的相关目录最好是不要有空格和中文,特别是不要有中文