Мы столкнулись с необычной проблемой, наша библиотека JNI падает во время загрузки.для разработки мы используем CentOS 5.4 / G ++ и VS2005. Сценарий
: в настоящее время мы работаем над усовершенствованием нашего продукта и хотим передать новую информацию обратно в код Java-сервера, используя JNI.наш код C / C ++ работает нормально, и мы проверили его, запустив примерно 6 часов или около того в нашей среде разработки.мы обновили две структуры результатов (которые уже присутствовали) с одним длинным значением, каждое для передачи результата нашего нового улучшения.
когда мы обновили код JNI для передачи результата в код Java, мы нашличто Java-сервер падает при загрузке JNI, мы выполнили отладку и обнаружили, что JNI lib падает, даже когда у нас нет изменений в базе кода JNI lib.
в нашей дальнейшей отладке мы обнаружили, что JNI Makefileвключает в себя файл .c (aa.c), в котором есть несколько наших изменений для нового улучшения;мы начали с комментирования наших изменений в этом файле aa.c один за другим и обнаружили, что сбой происходит только тогда, когда у нас есть вызов BBB.cpp :: method1 () (который мы добавили как часть нашего нового улучшения).
Необычная часть в том, что этот файл .c (aa.c) не нужен в библиотеке JNI, и у нас нет никаких методов aa.c, вызываемых из библиотеки JNI;Теперь мы удалили aa.c из Makefile JNI и прекрасно скомпилировали, но все равно вылетает, когда у нас есть вызов BBB.cpp :: method1 (), если мы удалим этот вызов method1 (), тогда он будет работать нормально.
мы не уверены, почему / как он ссылается на файл, который не включен, в Makefile и дает сбой.
это журнал ошибок, который мы видим
AgentServer #0 запущено: OK 12750 [Connection # Cnx: # 0.0.1026: 0 - Session # c0s1] ОШИБКА com.xx.xxx.xxxx - Невозможно загрузить библиотеку JNI BBBController java.lang.UnsatisfiedLinkError: / opt / XXXXX / lib / libjnixxx.so: Не удается загрузить 32-разрядный IA .so на 32-разрядной платформе IA в java.lang.ClassLoader $ NativeLibrary.load (собственный метод) в java.lang.ClassLoader.loadLibrary0 (ClassLoader.java:1751) вjava.lang.ClassLoader.loadLibrary (ClassLoader.java:1676) в java.lang.Runtime.loadLibrary0 (Runtime.java:822) в java.lang.System.loadLibrary (System.java:993)
Пожалуйста, предложите, любая идея будет оценена.
Заранее спасибо,
Aqurа