intellij-idea - 在 64 位 JVM Inteliij 上运行 32 位 .dll 时出错
问题描述
当我尝试在我的项目中执行以下代码行时,出现以下错误。我在我的项目属性中添加了一个 64 位 JDK。我使用 Intellij 作为我的 IDE
System.loadibrary(smsjavaagentapi)
致命错误:来自 System.loadibrary(smsjavaagentapi) java.lang.unsatisfiedLinkError smsjavaagentapi.dll 的异常:无法在 AMD 64 位平台上加载 IA 32 位 .dll
我认为问题在于我使用的是 64 位 JVM,而我正在尝试运行 32 位 .dll。我没有选择在我的机器上安装 32 位 JDK 并将其添加到我的项目属性中,我也无法将 .dll 移植到 64 位。有解决办法吗?
解决方案
操作系统级别有一个限制,它会阻止 64 位进程加载 32 位共享库,因此您的选择是
- 修改操作系统以允许这样做(不容易)
- 通过重新编译将 DLL 迁移到 64 位。
- 安装 32 位 JVM(更简单)
- 下载一个 32 位的 JVM 并解压它而不安装它。(不需要任何特别许可)
您可能会发现您可以获得一个附带 32 位 JVM 的 IntelliJ 版本,或者安装另一个安装 32 位 JVM 并仅使用 JVM 的程序。
推荐阅读
- next.js - 在 NextJs 中检测生产或开发环境的最简单方法?
- c# - 从列表框句子中获取小数,然后将该小数添加到变量中
- r - 替换 r 中的嵌套循环(具有多个条件)
- java - Groovy 应用程序中 AtomicReference 的爆炸式增长
- redux - 如何使用 redux 工具包读取初始状态?
- java - 如何单击 Spicejet 网站中的 RoundTrip 单选按钮。它被选中,但几秒钟后,单向被选为默认值
- python - 如何在keras中做自定义卷积层
- java - 如果我在单词后添加标点符号,为什么 equals() 方法不起作用?
- python - 如何合并三个字典并删除公共键值并按升序重新排列?
- weblogic - WebLogic REST API - 停止/启动 JDBC 数据源