0

我编写了一个 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/

谢谢大家帮助。

4

5 回答 5

1

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

  • 就我而言,我必须使用 oracles java 7,而不是 openJDK
  • 我必须为 vlc 可执行文件设置一些符号链接(“ln -s ...”),因为版本号不是 vlcj 预期的那个。

我不知道,如果这对你有用,但正如我在你的情况下,我很感激每一个提示。

于 2013-10-22T09:58:28.080 回答
0

The reason could be the usage of the OpenJDK. Try the OracleJDK.

于 2013-10-22T09:54:09.430 回答
0

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

对该问题的调查由来已久,您可以在该 github 问题页面的评论中看到。

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

  1. 32 位 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 或反之亦然可能没有任何区别。

于 2013-10-27T22:30:47.377 回答
0

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

于 2013-11-27T07:19:57.760 回答
0

在我的情况下,安装 Oracle JDK 并设置为默认 jdk 已经解决了这个问题。

于 2017-08-17T11:48:20.420 回答