【问题标题】:Unable to load library 'libtesseract302' in Play project无法在 Play 项目中加载库“libtesseract302”
【发布时间】:2014-02-13 17:49:01
【问题描述】:

我正在尝试在游戏项目中使用 tess4j。我已将 tess4j.jar、libtesseract302.dll 和 liblept168.dll 放在播放项目 lib 文件夹中,并在启动播放服务器时设置 java.library.path 和 jna.library.path,如下所示: play -Djava.library.path=lib -Djna.library.path=lib start

请注意,我使用了已在此处发布的 64 位 dllhttps://github.com/charlesw/tesseract/tree/master/src/lib/TesseractOcr/x64。这个链接在 Tess4j 官网也有说明。

但是,我仍然收到“无法加载库 'libtesseract302'”异常。我也尝试设置lib文件夹的绝对路径,没有任何效果。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: java jakarta-ee dll playframework-2.0 tesseract


    【解决方案1】:

    要使用 Tess4j,请尝试将 libtesseract302.dll 放在 Project 文件夹 中,而不是放在 lib 文件夹中。 这就是它在我的项目中的工作方式。

    但该错误可能是由 .dll 文件位置以外的各种情况引起的

    这个问题可能出现在——

    1. 您尝试在 64 位 JVM 而不是 32 位 JVM 上运行 Tess4j,尽管将 .dll 文件放置在完美位置,但它给出了相同的错误

    2. 您没有安装 Microsoft Visual C++ 2008 可再发行组件(特别是 2008) http://www.microsoft.com/en-in/download/details.aspx?id=29

    修复所有这些后它应该可以工作

    【讨论】:

    • 这些 DLL 是用 VS2013 构建的,因此依赖于 Visual C++ Runtime for VS2013
    • 谢谢杰。但我使用的是从我在问题中提到的位置下载的 64 位 dll。我从 nguyenq 共享的链接(VS2013)安装了 Visual C++,并将这些 dll 放在 play 项目文件夹中,但这个问题仍然存在。
    • 如果我们包含正确的 64 位 .DLL,我们还需要 Visual C++ 运行时吗?如果是这样,如何将 Visual C++ Runtime 放到 linux 应用服务器上?
    【解决方案2】:

    将 JAR 放入 classpathjava.library.path 用于本地库(.dll、.so、.dylib)。

    【讨论】:

    • Jar 已经在类路径中。我已将 dll 放在同一个文件夹中,并给出了相同的 java.library.path。
    猜你喜欢
    • 2013-04-13
    • 2022-07-09
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    相关资源
    最近更新 更多