Java Web服务“java.library.path中没有nativemvm”

时间:2017-03-14 17:03:17

标签: java matlab web-services

我正在使用以下代码创建一个Web服务:

package com.tesis.service;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.RejectedExecutionException;
import com.mathworks.engine.*;

public
 class CNNPredict 
{
    public String cNNPredict(int[] Image, int Height, int Width) throws Exception
    {
        String FilePath =   "/home/riosgamarra/Documents/MATLAB/TesisGamarrarios";
        char[] CharFilePath = FilePath.toCharArray();
        MatlabEngine eng = MatlabEngine.startMatlab();
        eng.feval("cd", CharFilePath);
        String result = eng.feval("CNNPredict",Image,Height,Width);
        return result;
    }
}

它的工作原理显然很好,因为WSDL页面打开没有问题。 我正在使用Matlab引擎所以我必须添加.jar文件,我在ServidorTesis/ReferencedLibrariesServidorTesis/WebContent/lib

中添加了它

此外,我在Web部署程序集中添加了此.jar:

Web Deployment Assembly

问题是当我尝试使用我的客户时:

public class CallWS {

    /**
     * @param args
     * @throws IOException 
     * @throws CNNPredictExceptionException 
     */
    public static void main(String[] args) throws IOException, CNNPredictExceptionException
    {
        CNNPredictStub stub = new CNNPredictStub();
        CNNPredict cnn = new CNNPredict();
        BufferedImage img = null;
        System.out.println("Reading image ...");
        img = ImageIO.read(new File("/home/riosgamarra/Documents/MATLAB/TesisGamarrarios/101_ObjectCategories/laptop/image_0009.jpg"));
        int[] UnrolledImage = convertToGray(img);
        cnn.setImage(UnrolledImage);
        cnn.setWidth(img.getWidth());
        cnn.setHeight(img.getHeight());
        System.out.println(stub.cNNPredict(cnn).get_return());

    }
    private static int[] convertToGray(BufferedImage image)
    {
        final int width = image.getWidth();
        final int height = image.getHeight();
        int red;
        int green;
        int blue;
        int gray;
        int[] result = new int[width*height];
        for(int c = 0; c < width; c++)
            for(int f = 0; f < height; f++)
            {
                Color color = new Color(image.getRGB(c,f));
                red = color.getRed();
                green = color.getGreen();
                blue = color.getBlue();
                gray = (red+green+blue)/3;
                result[height*c + f] = gray;
            }
        return result;
    }
}

它会抛出以下错误:[ERROR] no nativemvm in java.library.pathCaused by: java.lang.UnsatisfiedLinkError: no nativemvm in java.library.path 并且代码不会运行。

我记得当我将这个Web服务器作为桌面应用程序进行操作时我遇到了同样的错误并修复了它添加此路径:“/ usr / local / MATLAB / R2016b / bin / glnxa64”到本机库文件夹配置:< / p>

How I fixed

但现在我不知道如何解决这个问题:

我已经读过我需要更改“Catalina_OPTS”中的内容,但我不明白这是什么或如何改变它,我已经遵循了很多指示,但没有任何作用。

感谢您的时间。

0 个答案:

没有答案