ФАТАЛЬНАЯ ОШИБКА в коде JNI - предположительно в библиотеке JDIC
Я использую Java-приложение для настольных компьютеров, чтобы отслеживать мое время на проектах.
Я использовал его до тех пор, пока ИТ-отдел не установил новую настройку на моей станции. И теперь я не могу запустить это приложение.
Я получил файл журнала, когда я запускаю его, говоря:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d8fd8f5, pid=616, tid=4072
#
# JRE version: 6.0_15-b03
# Java VM: Java HotSpot(TM) Client VM (14.1-b02 mixed mode, sharing windows-x86 )
# Problematic frame:
# V [jvm.dll+0xfd8f5]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Попробовав некоторое время, я перешел к руководству по устранению неполадок, составленному Sun, и снова запустил приложение с -Xcheck:jni
спор на этот раз. В результате я получил эту новую ошибку:
FATAL ERROR in native method: Wrong object class or methodID passed to JNI call
at org.jdesktop.jdic.tray.internal.impl.DisplayThread.initTray(Native Method)
at org.jdesktop.jdic.tray.internal.impl.DisplayThread.run(Unknown Source)
- locked <0x2801e4e0> (a java.lang.Class for org.jdesktop.jdic.tray.internal.impl.DisplayThread)
Я пытался загрузить последнюю версию JDIC, но даже запустив собственные примеры, я получил ту же ошибку. Я думаю, что проблема с заблокированным в сообщении об ошибке, но я не знаю, куда идти дальше...
Не могли бы вы помочь мне?
Моя коробка:
Windows XP SP3
Java 6 (1.6.0_15)
ОБНОВИТЬ
Сейчас это исправлено, к сожалению, я не могу сказать, как. Со вчерашнего дня единственное, что я могу сказать, это то, что я перезапустил хотя бы один раз, кроме того, что я не установил новую настройку Java или что-то еще... Извините, если кто-то сталкивается с той же проблемой.
2 ответа
Посмотрите, можете ли вы вызывать функции, которые не принимают аргументы без проблем, по сравнению с теми, которые делают.
Вы можете обнаружить, что интерфейс больше не соответствует библиотеке. Например, если вы используете SWIG для генерации файлов интерфейса, разные версии SWIG генерируют разное количество аргументов.
К сожалению, несовпадение кода интерфейса Java и кода библиотеки не приводит к ошибке, он просто вылетает.
Ах, радости JNI!
Я думаю, это говорит о том, что API библиотеки нативного кода, которую пытается использовать ваше приложение, несовместимо со стороной Java. Я предполагаю, что изменения, которые сделали ИТ-специалисты, включали изменение библиотеки / DLL / чего бы то ни было, что пытается использовать приложение Java.