Ubuntu JRE 检测到致命错误



我写了一个java程序,可以在帧上使用vlcj播放视频。我使用 NativeDiscovery().discover() 来获取 libvlc 库,该程序适用于 Windows,但在 ubuntu 上 NativeDiscovery().doscover() 返回 false,并且日志文件出现致命错误: 这只是日志文件的开头

 A fatal error has been detected by the Java Runtime Environment:
 SIGSEGV (0xb) at pc=0xb7674f98, pid=21800, tid=2195979072
 JRE version: 7.0_25-b30
 Java VM: OpenJDK Server VM (23.7-b01 mixed mode linux-x86 )
 Problematic frame:
 C  [libc.so.6+0x12ef98]  _IO_file_underflow+0x68
 Filed to write core dump. Core dumps have been disabled. To enable core dumping, try ulimit -c unlimited" before starting Java again
 If you would like to submit a bug report, please include
 instructions on how to reproduce the bug and visit:
   https://bugs.launchpad.net/ubuntu/+source/openjdk-7/

谢谢你们的帮助。

去年我与VLCJ一起工作时不得不面对一堆类似的错误。我不知道,如果你有和我完全相同的错误,但我可以给你一些提示:

  • 就我而言,我不得不使用Oracle Java 7,而不是OpenJDK
  • 我不得不为 VLC 可执行文件设置一些符号链接("ln -s ..."),因为版本号不是 VLCJ预期。

我不知道,这是否对你有用,但当我处于你的情况时,我很感激每一个提示。

原因可能是OpenJDK的使用。试试OracleJDK。

这几乎可以肯定与 https://github.com/caprica/vlcj/issues/62 是相同的问题。

对该问题的调查历史悠久,您可以在该 github 问题页面的评论中看到。

简短的版本是,由于一些目前未知的原因:

    32 位
  1. Java7 JVM 和 32 位 Ubuntu 的组合会触发此致命错误;
  2. 该错误与 VLC 播放媒体时解析 LUA 脚本有关;
  3. 删除VLC的LUA脚本将解决问题 - 但是像YouTube这样的东西将停止工作(因为VLC的YouTube支持需要LUA);
  4. 它将在 32 位 Ubuntu 上与 Java6 一起工作;
  5. 它将在 64 位 Ubuntu 上与 Java7 一起工作;
  6. 如果你编写等效的"C"程序,它将工作 - 所以JVM中的某些东西触发了问题。

不幸的是,我不知道这个错误是在Ubuntu的LUA版本还是Java7 JVM的Oracle/OpenJDK版本中。

从OpenJDK切换到Oracle的JDK,反之亦然,可能没有区别。

我遇到了类似的问题。我通过删除 openjdk 并重新安装它来解决它:)

就我而言,安装 Oracle JDK 并设置为默认 jdk 已经解决了这个问题。

最新更新