缺少Java 1.6运行时中的符号

时间:2013-01-10 12:10:17

标签: java-native-interface solaris java symbols

我正在尝试使用Solaris 10下的JNI和JDK 1.6运行一些hello world应用程序。我已经从Oracle安装了JDK,1.6.0_37,我的hello world应用程序的每次执行都失败了:

# java -cp "libhelloworld.jar:." -Djava.library.path=. HelloWorld

ld.so.1: java: fatal: Java_java_util_jar_JarFile_getMetaInfEntryNames: can't find symbol

我尝试过不同的JDK,认为这是一些分发问题。我使用JDK 1.6.0_231.7.0_10获得了相同的缺失符号错误。

我对JDK附带的所有* .so库中的所有符号进行了快速grep,发现此符号在jre/i386/libzip.so中定义。然后我用LD_PRELOAD="${JAVA_HOME}/jre/i386/libzip.so" LD_LIBRARY_PATH="..."运行了java,这次出现了分段错误。我需要提一下,我已经在Windows 7和Ubuntu 12.10下测试了这个hello world应用程序,它没有问题。

可能这个问题严格限制在Solaris + JDK tandem上。由于我不熟悉Java运行时,我没有其他想法如何调试此问题。任何提示?

0 个答案:

没有答案