我写了一个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 位
- Java7 JVM 和 32 位 Ubuntu 的组合会触发此致命错误;
- 该错误与 VLC 播放媒体时解析 LUA 脚本有关;
- 删除VLC的LUA脚本将解决问题 - 但是像YouTube这样的东西将停止工作(因为VLC的YouTube支持需要LUA);
- 它将在 32 位 Ubuntu 上与 Java6 一起工作;
- 它将在 64 位 Ubuntu 上与 Java7 一起工作;
- 如果你编写等效的"C"程序,它将工作 - 所以JVM中的某些东西触发了问题。
不幸的是,我不知道这个错误是在Ubuntu的LUA版本还是Java7 JVM的Oracle/OpenJDK版本中。
从OpenJDK切换到Oracle的JDK,反之亦然,可能没有区别。
我遇到了类似的问题。我通过删除 openjdk 并重新安装它来解决它:)
就我而言,安装 Oracle JDK 并设置为默认 jdk 已经解决了这个问题。