Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 共享库中本机方法调用Jython UnsatifiedLinkError_Java_Java Native Interface_Jython_Swig - Fatal编程技术网

Java 共享库中本机方法调用Jython UnsatifiedLinkError

Java 共享库中本机方法调用Jython UnsatifiedLinkError,java,java-native-interface,jython,swig,Java,Java Native Interface,Jython,Swig,首先,这里是有效的,然后我将描述无效的:使用SWIG,我们获得了一些第三方代码,并创建了Java和C包装器源代码。创建了Java类的jar文件和C包装器代码的共享库。我们有一个加载共享库的Java代码库,可以根据需要调用本机代码。这是在Sun HostSpot JVM 1.5.0.14上运行的。不用担心 现在,这不起作用了:使用相同的JVM、jar文件和Java包装器代码,以及上述相同的共享库,我尝试使用Jython来编写脚本。类路径和LD_库路径环境变量设置正确。在Jython中,我能够运行j

首先,这里是有效的,然后我将描述无效的:使用SWIG,我们获得了一些第三方代码,并创建了Java和C包装器源代码。创建了Java类的jar文件和C包装器代码的共享库。我们有一个加载共享库的Java代码库,可以根据需要调用本机代码。这是在Sun HostSpot JVM 1.5.0.14上运行的。不用担心

现在,这不起作用了:使用相同的JVM、jar文件和Java包装器代码,以及上述相同的共享库,我尝试使用Jython来编写脚本。类路径和LD_库路径环境变量设置正确。在Jython中,我能够运行java.lang.System.loadLibrary(…),并无错误地加载共享库。但是,当这个库中的第一个本机方法在我的Jython脚本中为Java对象调用时,我从JVM中得到一个未满足的linkerror

我在共享库上运行了nm,我看到有问题的方法存在于库中(本机方法的名称为mangling,如JNI规范中所述)。所以,问题是,是什么阻止了JVM解析方法名


我已经阅读了JNI规范,我看到GC可以卸载库。在我调用该方法之前会发生这种情况吗?还有什么会导致此操作失败?

我以前遇到过此问题。在我的例子中,加载的DLL/.so库具有未找到的其他依赖项,错误消息仅报告我尝试加载的库。我使用下面的工具来找出缺少的依赖项

如果您在windows上,请使用进程监视器查看应用程序正在搜索的确切DLL。您需要启动Process Monitor,然后运行应用程序并过滤日志,以查看应用程序正在查找哪些DLL


如果您使用的是linux,请使用strace()并查看缺少哪个共享库。

您找到解决方案了吗?我找到了。不幸的是,我没有做“好邻居”的事,也没有公布解决方案:)。现在,我必须凭记忆来做。我相信我必须在脚本中非常明确地导入内容。我不能简单地
导入。
。我必须使用:
来自导入