Я следую учебному пособию по JNI:
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html
и моя библиотека C успешно создана, но у меня возникают проблемы с ее использованием.
Когда я запускаю свою программу Java в Eclipse на OpenSuse11, я получаю следующую ошибку:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libfpdpReaderLib.so: /usr/lib/libfpdpReaderLib.so: ELF file data encoding not little-endian (Possible cause: endian mismatch)
Я попытался пересобрать библиотеку, заставив "-mlittle-endian" в gcc, но это не удалось, так как другие библиотеки, которые она использует, явно с прямым порядком байтов.
Могу ли я заставить java использовать big-endian, как кажется на остальной части машины? Какие-нибудь идеи, почему я получаю это несоответствие, поскольку я думал, что JVM в целом был байтовым?
Спасибо за любую помощь!
Обновление 23/11/2011:
gcc явно компилирует big-endian, который совпадает с включенными библиотеками, но я запутался, почему Java-вызов System.loadLibrary ожидает little-endian, поскольку это идет против остальной системы ...
Я предполагаю, что это потому, что Java будет работать в JVM, но из того, что я прочитал, я подумал, что по умолчанию это будет big-endian ...?
Есть идеи, как я могу изменить то, что ожидает моя Java?