0

フレームで vlcj を使用してビデオを再生する Java プログラムを作成しました。libvlc ライブラリを取得するために NativeDiscovery().discover() を使用します。プログラムは 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で働いていたので、似たようなエラーに直面しなければなりませんでした。私が持っていたのとまったく同じエラーがあるかどうかはわかりませんが、いくつかのヒントを与えることができます:

  • 私の場合、openJDKではなく、oracles Java 7を使用する必要がありました
  • バージョン番号がvlcjが期待していたものではなかったため、vlc実行可能ファイルへのシンボリックリンク(「ln -s ...」)をいくつか設定する必要がありました。

これがあなたにとって役立つかどうかはわかりませんが、私はあなたの状況にあったので、すべてのヒントに感謝しました.

于 2013-10-22T09:58:28.080 に答える
0

その理由は、OpenJDK の使用にある可能性があります。OracleJDK を試してください。

于 2013-10-22T09:54:09.430 に答える
0

私の場合、Oracle JDKをインストールし、デフォルトのjdkとして設定することで問題が解決しました。

于 2017-08-17T11:48:20.420 に答える
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 に答える