matlab代码

时间:2018-02-06 08:58:46

标签: java matlab matlab-deployment

我打算将我的MATLAB代码转换为java。我正在关注this官方文档。但在使用javac进行编译后,我无法完成步骤17。 当我从cmd java -classpath .;"C:\Program Files\MATLAB\MATLAB Runtime\v93\toolbox\javabuilder\jar\javabuilder.jar";makesqr.jar getmagic 5

运行时

我收到错误:Exception in thread "main" java.lang.NullPointerException at getmagic.main(getmagic.java:36)

我现在只是关注本教程,不明白getmagic.java文件中发生了什么。

    import com.mathworks.toolbox.javabuilder.*;
import makesqr.*;

class getmagic
{
   public static void main(String[] args)
   {
      MWNumericArray n = null;
      Object[] result = null;
      Class1 theMagic = null;

      if (args.length == 0)
      {
        System.out.println("Error: must input a positive integer");
        return;
      }

      try
      {
         n = new MWNumericArray(Double.valueOf(args[0]),
                                      MWClassID.DOUBLE);

         theMagic = new Class1();

         result = theMagic.makesqr(1, n);
         System.out.println(result[0]);
      }
      catch (Exception e)
      {
         System.out.println("Exception: " + e.toString());
      }
      finally
      {
         MWArray.disposeArray(n);
         MWArray.disposeArray(result);
         theMagic.dispose();
      }
   }
}

错误在第36行:theMagic.dispose();

2 个答案:

答案 0 :(得分:1)

为什么要将处置放在最后的括号中? 即使在try块

中出现异常,最终大括号内的所有内容都会被执行

因此,在您的情况下,首先将theMagic设置为null,此值仅在try块中设置,并且仅在没有错误发生时设置。 这样,一旦发生错误,theMagic就没有设置,但你仍然试图在null值上调用theMagic.dispose。

我想最简单的解决方案是在try块中编写你的dispose调用。

答案 1 :(得分:0)

在处理之前

检查是否为空:

if(theMagic != null){
    theMagic.dispose();
}