pyjnius提示缺少DLL文件

参考链接:

https://stackoverflow.com/questions/20970732/jnius-1-1-import-error

http://www.dependencywalker.com/

1 问题描述

在使用pyjnius来使用jar包时,出现了以下问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2022-11-13 13:26:42.866678: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2022-11-13 13:26:43.785389: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
NN Class imported
NN_MIP Class imported
WDP Class imported
Traceback (most recent call last):
File "example_economies.py", line 30, in <module>
value_model = PySats.getInstance().create_lsvm(seed=1)
File "D:\workspace\Python\jupyter\MyResearch\DL-ICA-master\source\pysats.py", line 49, in create_lsvm
from source.lsvm import _Lsvm
File "D:\workspace\Python\jupyter\MyResearch\DL-ICA-master\source\lsvm.py", line 41, in <module>
from jnius import JavaClass, MetaJavaClass, JavaMethod, cast, autoclass
File "D:\ProgrammingTools\miniconda\envs\ica\lib\site-packages\jnius\__init__.py", line 12, in <module>
from .jnius import * # noqa
ImportError: DLL load failed: 找不到指定的模块。

2 解决方案

重新安装jnius,失败。

如果import jnius就会出现DLL,多半是因为环境变量的问题。

在你的路径环境变量(“系统变量”下)加入以下内容:

1
2
3
C:\Program Files (x86)\Java\jdk[YOUR JDK VERSION]\jre\bin\server
或者
C:\Program Files (x86)\Java\jre[YOUR JDK VERSION]\bin\client

在环境变量中,最好应该设置一个用户变量JAVA _ HOME:

1
2
java的安装位置,默认的安装位置如下
C:\Program Files (x86)\Java\jdk[YOUR JDK VERSION]

由于 jnius 是一个java包装器,因此加载失败的DLL通常是位于“server文件夹中的“jvm.DLL”。

不过,可能还有其他 DLL 文件丢失。确保您拥有msvcr90或msvcr100以及其他通过安装 Visual Studio 2008或2010再发行版提供的软件。通过下载依赖分析软件 Walker (http://www.dependencywalker.com/)并分析 jnius.pyd 所需的 DLL,可以找到更完整的答案(我记得根据个人经验,它确实需要 msvcr100和 msvcr90)。


pyjnius提示缺少DLL文件
https://fulequn.github.io/2022/11/Article202211132/
作者
Fulequn
发布于
2022年11月13日
许可协议