【发布时间】:2020-06-13 01:57:48
【问题描述】:
当我尝试运行任何游戏项目时,我收到以下警告,这似乎使我的项目运行速度比正常慢很多:
Cannot load the JNotify native library (no jnotify in java.library.path)
Play will check file changes for each request, so expect degraded reloading performance.
我找到this的问题,这似乎已经解决了Windows用户的问题,但我还没有找到适用于Linux机器的解决方案
我尝试将从here 下载的.jar 和.so 复制到/usr/lib/jvm/jdk1.8.0_212/bin/ 中,但没有成功
另外,我注意到在我的播放目录 (~/play/repository/local/net.contentobjects.jnotify/jnotify/0.94/jars) 中有一个 jnotify.jar,所以我不确定它为什么不使用那个
我在 Ubuntu 20.04 64 位上使用 Play v2.2.4
从 jnotify.jar 中提取 .so 后,ldd libjnotify.so 命令的输出为:
linux-vdso.so.1 (0x00007ffd4c3cd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f94bbed5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f94bc2df000)
它似乎没有列出任何未解析的库(尽管我不确定如何解释该输出)。 libc.so.6 和 ld-linux-x86-64.so.2 存在于列出的目录中,我不确定它在哪里寻找 linux-vdso.so.1
感谢任何帮助!
【问题讨论】:
-
错误信息意味着它试图加载原生的.so库,但由于某种原因失败(可能是由于某些链接错误)。尝试从 jar 中提取 .so 并运行
ldd <file.so>- 是否报告了任何未解析的库?您可能想为您的问题添加更多详细信息,您使用的是哪个 Play 版本、哪个发行版、架构? -
嗨@cbley 感谢您的回答!我用请求的信息更新了问题。简而言之,我在 Ubuntu 20.04 64 位上运行 Play v2.2.4,它似乎没有报告任何未解析的库
-
哇,2.2.4 真的太老了。至少,尝试升级到 2.2.6。这条评论 here 建议 2.3.2 修复了这样的问题...您也可以尝试其他解决方案,例如显式传递
java.library.path进行播放。 -
是的,我正在做一个有 10 年历史的项目,PO 认为升级播放版本不值得。我找不到如何通过
java.library.path来玩,你会怎么做? -
哦,等等,它正在工作。我将下载的 .so 文件移动到 java.library.path 中的路径之一,它成功了。感谢您的帮助!
标签: java linux playframework jnotify