Я пытаюсь импортировать Marvin Framework в проекте сервлета Java EE с использованием Eclipse.
Как написано в руководстве , я скопировал и вставил *Папка 1007 * marvin и настроенный путь сборки и сборка развертывания.Однако, похоже, что функция robert () в методе getPath () класса Main не найдена.
Это метод GET сервлета:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Part filePart = request.getPart("file");
InputStream is = filePart.getInputStream();
BufferedImage bi = ImageIO.read(is);
Point[] points = Main.getPath(bi);
[...]
И это часть класса Main:
import static marvin.MarvinPluginCollection.*;
import marvin.MarvinPluginCollection;
import marvin.image.MarvinImage;
import marvin.io.MarvinImageIO;
public class Main {
public static Point[] getPath(BufferedImage inputImage) {
MarvinImage image = new MarvinImage(inputImage);
image = resizeImage(image, 200);
printImage(image);
MarvinImage result = new MarvinImage(image.getWidth(), image.getHeight());
result.clear(0xFF000000);
MarvinPluginCollection.roberts(image, result);
thresholding(result, 45);
invertColors(result);
printImage(result);
MarvinImageIO.saveImage(result, "result.jpg");
BufferedImage im = result.getBufferedImage();
[...]
}
}
Это ошибка сервера:
GRAVE: Servlet.service() for servlet [edgedetector] in context with path [/edgeDetectorService] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoSuchMethodError: marvin.util.MarvinPluginLoader.loadImagePlugin(Ljava/lang/String;)Lmarvin/plugin/MarvinImagePlugin;
at marvin.MarvinPluginCollection.checkAndLoadImagePlugin(MarvinPluginCollection.java:1225)
at marvin.MarvinPluginCollection.roberts(MarvinPluginCollection.java:941)
at marvin.MarvinPluginCollection.roberts(MarvinPluginCollection.java:931)
at edgeDetector.Main.getPath(Main.java:49)
at edgeDetector.edgeDetectorServlet.doGet(edgeDetectorServlet.java:41)
at edgeDetector.edgeDetectorServlet.doPost(edgeDetectorServlet.java:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
[...]
Iтакже не знаю, почему в сообщении об ошибке есть две L буквы:
marvin.util.MarvinPluginLoader.loadImagePlugin ( L java / lang /String;) L marvin / plugin / MarvinImagePlugin;
Если я запускаю код локально, как обычное приложение Java (без использования сервера), он работает.
Я только что нашел другой вопрос , но не могу понять, какой путь мне нужно указать в методе setImagePluginPath () .