java.lang.UnsatisfiedLinkError: no frmjapi in java.library.path

java.lang.UnsatisfiedLinkError: no frmjapi in java.library.path

我有一个正在处理的 eclipse 项目,我正在 XP 32 位机器上使用它,我想将该项目移动到我的 PC Windows 7 64-少量。我可以毫无错误地编译我的项目,但是当我 运行 它时,我得到错误 Exception in thread "main" java.lang.UnsatisfiedLinkError: no frmjapi in java.library.path。 我在其他帖子中查找错误,但大多数都是在处理本机库,我的项目只包含这 1 个 jar 文件。我多次尝试删除项目并将其添加到构建路径,但问题仍然存在。 这个问题背后的原因可能是什么?

原因显然是你的后台库在运行时依赖了一个native库,所以你需要将文件frmjapi.dll的根目录添加到java.library.path 按照错误消息中的建议,在 VM 参数 中添加 -Djava.library.path=c:\some\path\to\my\dll\parent\dir(参见 运行 配置)。

What is frmjapi.dll?

frmjapi.dll is a file from Oracle Corporation which is part of Oracle Developer. frmjapi.dll is located in doracledev10g\bin\frmjapi.dll.

这些错误通常在处理 native/platform 特定应用程序(如图形或多媒体应用程序)时逐渐出现。您的代码可以正常编译,因为在编译时它只查找直接 java 依赖项,而不查找所有运行时依赖项,如 .dll 文件。如您所说,项目已从 32 位平台转移到 64 位平台。确保在 Eclipse 中安装并链接了正确的 java 版本。另外,查看包含的 jar 文件所需的依赖项(它是否支持 64 位机器上的功能)。最后但并非最不重要的一点是尝试从 IDE 外部 运行 项目(确保它具有所有必需的权限)。

其他解决方案(与 Jdapi for Oracle Forms 相关的问题)是在您的路径中包含文件夹 %ORACLE_HOME%\bin。 那么你不需要向你的 java 命令行提供 -Djava.library.path 参数。

我在 运行 我的 Jdapi Java 程序之前在我的 .bat 文件中使用了它:

set ORACLE_HOME=C:\Oracle\Forms12c\products\Oracle_Home
:: Only adds ORACLE_HOME\bin to the PATH if not already present
for %%X in (frmjapi.dll) do (set FOUND=%%~$PATH:X)
if not defined FOUND set PATH=%ORACLE_HOME%\bin;%PATH%

我试过运行jdapi在Windows10和运行导入的问题。我收到的错误消息是 "cannot find the dependent libraries" for frmjapi.dll.

我的解决方法如下:

  1. 确保 %ORACLE_HOME%/binPATH 中。 (这样可以解决"no frmjapi in java.library.path"
  2. 的问题
  3. 安装Windows 10 SDK。 (这样可以解决“调用frmjapi.dll找不到依赖库的问题)

更多关于dll丢失问题的讨论,请看

希望对您有所帮助。