Выполнение останавливается в «Microsoft Visual C ++ Runtime Error» -popup - PullRequest
3 голосов
/ 08 августа 2011

Проект, в котором я сейчас участвую, использует JavaCv / OpenCv для распознавания лиц. Поскольку OpenCv иногда выдает ошибку, а распространение ошибок OpenCv / C ++ в исключения Java еще не полностью функционально, это означает, что основной цикл Java завершается сбоем без возможности восстановления.

Однако код дает в основном точные результаты, и, поскольку мы запускаем его в большой базе данных, я запустил быстрый Batch-скрипт для выполнения, чтобы он продолжался, и код Java внутренне управляет id, чтобы убедитесь, что он продолжается сразу после того, где он упал.

:RETRY
java -Xmx1024m -jar Main.jar
IF ERRORLEVEL 1 GOTO RETRY
EXIT 0

Однако иногда я получаю всплывающее сообщение об ошибке выполнения, как показано ниже:

Библиотека времени выполнения Microsoft Visual C ++

Ошибка выполнения!

Программа: C: \ Windows \ System32 \ java.exe

Это приложение запросило завершение времени выполнения необычным способом. Пожалуйста, обратитесь в службу поддержки приложения для получения дополнительной информации.

В этот момент выполнение кода останавливается до щелчка по всплывающему окну, что действительно раздражает, поскольку это означает, что мой код не может работать без присмотра за ним.

Я нашел этот вопрос, который в основном задает то же самое. Для этого вопроса существует принятое решение , но поскольку я не работаю напрямую с C ++, я не понимаю, как мне это реализовать.

Есть ли пакетное решение этой проблемы? Существует ли решение уровня Java / JavaCv для обнаружения ошибок C ++, исходящих от OpenCv? Любое другое решение?

1 Ответ

1 голос
/ 08 августа 2011

Интересный вопрос.Java.exe зависит от одной или нескольких библиотек DLL Visual C ++ (например, MSVCRT.DLL, msvcr90.dll и т. Д.).Возможно, файл JAR вызывает Java.exe, чтобы вызвать эту ошибку.Java.exe должен вызывать некоторую функцию CRT, которая вызывает исключение и, следовательно, ошибку времени выполнения.

Лучшее, что вы можете сделать, это запустить процесс, позволить этой ошибке появиться, а затем запустить Process Explorer и посмотрите стек вызовов.Тем не менее, решение этой проблемы, скорее всего, находится вне вашего контроля.Может быть, последняя версия Java может помочь.

...