从Java Tomcat Servlet调用时,C ++程序返回-1073741515

时间:2015-08-09 17:12:33

标签: java c++ opencv tomcat servlets

我有一个处理图像处理的C ++应用程序(通过OpenCV 2.4.10)。当我从命令行或从另一个本地Java应用程序调用此程序时,使用以下代码片段:

ProcessBuilder pb = new ProcessBuilder(_IMG_PROC_ENGINE_PATH, imgPath);
pb.redirectError();
Process p = pb.start();
exitCode = p.waitFor();

一切正常,CPP应用程序返回正确的结果。

但是当我使用来自 Java Tomcat Servlet 的完全相同的用户帐户在同一台​​PC上调用相同的CPP程序时,我收到错误返回码来自CPP的 -1073741515 。经过一些搜索,我发现当外部库加载出现问题时会发生此代码错误。如果我从C ++程序中删除OpenCV库的用法,那一切都没问题。

我的问题是为什么当我从命令行或其他本地Java应用程序本地执行程序时,一切正常,但是当我从 Java Servlet 调用相同的C ++ EXE时,我收到库加载错误。

如何解决问题?

P.S。 PC上没有防病毒软件或任何其他安全软件(例如Internet Security,EMET等),这可能会中断该过程。

1 个答案:

答案 0 :(得分:1)

我认为在Tomcat Servlet中运行时环境变量有些不同。这可以解释为什么你的程序无法加载运行时库。

我会尝试将必要的OpenCV运行时库文件复制到与C ++可执行文件相同的目录中。