将写好的matlab函数生成jar包后,java在调用时报错java.lang.NullPointerException
at java.util.Arrays$ArrayList.(Arrays.java:2842)
at java.util.Arrays.asList(Arrays.java:2828)
at com.mathworks.toolbox.javabuilder.internal.MWMCR.getRhsCompat(MWMCR.java:471)
at Jz.Class1.Jz(Class1.java:211)
at com.tuchaoming.matlab.MathTest.main(MathTest.java:17)
下面是我的matlab函数代码:
function I = Jz()
[filename, pathname] = uigetfile({'*.jpg'; '*.bmp'; '*.gif';'*.png'}, '选择图片');
%没有图像
if filename == 0
return;
end
Image = imread([pathname, filename]);
%灰度图像转为二值图像
BW1 = im2bw(Image,0.4);
BW1 = imresize(BW1,[100,100]);
BW1 = BW1(18:90,20:90);
%重新设置像素大小
BW1=imresize(BW1,[25,25]);
I= ~BW1;
[r,c]=size(I);
fid=fopen('C:\Users\Tyang\Desktop\Juzhen\Jz.txt','wt');
for i=1:1:r
for j=1:1:c
if j==c
fprintf(fid,'%4.3f\n',I(i,j));
else
fprintf(fid,'%4.3f\t',I(i,j));
end
end
end
fclose(fid);
java调用代码:
import Jz.*;
import com.mathworks.toolbox.javabuilder.*;
public class MathTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Class1 func = new Class1();
// func.plotsin(0, 0.0f,0.01f,10*Math.PI);
func.Jz(0, null);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
在matlab中运行函数是可以的,但是在java调用时就报错了