Я разрабатываю приложение на Java, которое должно связываться с микропроцессором msp430 от TI. Для связи с устройством я использую java-код hidDemo и предоставленную DLL (которая использует скрытый код API C).java hid communication dll делает jvm crash
Моя проблема в том, что я получаю ошибки на уровне DLL, которые разбивают JVM. Проблемы возникают, когда я общаюсь с устройством, и когда я отсоединяю устройство.
Я пытался обработать ошибку на уровне DLL без успеха. Я также попытался перекомпилировать DLL с новой версией API с скрытым доступом; до сих пор не повезло.
След ошибки генерируется JRE следующая:
Инструкции: (рс = 0x74672874) 0x74672864: Произошла
[ошибка при передаче сообщений об ошибках (регистры печати, верхней части стека, инструкции возле ПК), идентификатор 0xc0000005]Стек: [0x4f7c0000,0x4f9c0000], зр = 0x4f9bf1c0, свободное пространство = 2044k Native кадров: (J = составлен Java-код, J = интерпретированы, Vv = ВМ код, С = машинный код) C 0x74672874 C [hidcommunicationman ager.dll + 0x11db3] С [hidcommunicationmanager.dll + 0x13844] J com.ti.msp430.usb.hiddemo.management.HidCommunicationManager.getSerialsForVidPid (II), [Ljava/языки/Строка; +0
Ошибка - это EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x74672874, pid=3336, tid=5444
, которая похожа на исключение NullPointer.
Любые советы о том, как это решить?
Попросите поставщика исправить DLL, чтобы он этого не делал. Невозможно защитить себя от неисправной DLL на Java. –
Вещь - я могу перекомпилировать DLL, они предоставляют демонстрационный проект для диалога с микропроцессором. Я уже спросил поставщика о сбое;) – Romain
Возможно, DLL может повредить память так, чтобы это не вызывало проблемы в DLL, но вызывает проблему в остальной части программы. Возможно также, что вы продолжаете использовать ресурс, который больше не доступен после того, как DLL очистит его. –