3

ビデオプレーヤーを備えたJavaでメッセンジャープログラムを作成しようとしているので、vlcjを使用しています。しかし、私はこのエラーを受け取ります:

スレッド「メイン」での例外 java.lang.UnsatisfiedLinkError:
ライブラリ 'libvlc' をロードできません:
指定されたモジュールが見つかりませんでした。

hereのチュートリアルに従いましたが、それでもこのエラーが発生します。これは私が得る唯一のエラーです。

x64 VLC を使用して Windows 7 x64 Ultimate を実行しています。最新のEclipseバージョンを使用してコーディングしています。

これを修正する方法を順を追って説明してくれる人はいますか?

4

7 に答える 7

3

アプリケーションに「libvlc」および「libvlccore」dll パスを追加する必要があります。これらは、vlc インストール フォルダーに存在します。次のコード行を追加して、機能させることができます。

NativeLibrary.addSearchPath("libvlc", "C:/VideoLAN/VLC");

ここで「C:/VideoLAN/VLC」はvlcのインストールフォルダです。

于 2013-02-28T03:44:12.277 に答える
1

ストレート x64 または x32 環境を使用していることを確認してください。これの意味は:

  • Windows x64 (明らかに)
  • Java JRE x64 (2 つ目の x32 JRE をインストールしないでください)
  • Java JDK x64
  • VLC x64

今、あなたは大丈夫なはずです。

于 2016-09-10T08:44:29.837 に答える
1

これは、JNA を使用して vlc ライブラリをロードする方法です。

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "Path to native library");

私のプログラムでは、vlc「libvlc.dll」と「vlccore.dll」がサブフォルダーにlib/VLC/あるため、「program.jar」に関連するファイルをロードSystem.getProperty("user.dir")し、最後にパスを追加します。

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), System.getProperty("user.dir") + "/lib/VLC");

Windows 7 でデフォルトの VLC インストール パスからライブラリをロードする場合は、次のように実行できます。

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:/Program Files (x86)/VideoLAN/VLC");

編集: eclipse 内からこのコードを実行すると、VLC ライブラリ ファイルへの絶対パスを指定しない限り、機能しません。相対パスをテストする場合は、最初に jar ファイルをビルドし、VLC ライブラリ ファイルに相対的な正しいフォルダーに配置します。

于 2013-02-28T02:53:13.690 に答える
1

あなたが投稿したvlcjの説明を読みました。

vlcjライブラリは JNA を使用しているようで、チェック プログラムに記載されているように、NativeLibraryクラスを使用してライブラリ検索パスを設定できます 。

import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;

public class Tutorial1A {
    public static void main(String[] args) {
        String vlcHome = "dir/with/dlls"; // Dir with vlc.dll and vlccore.dll
        NativeLibrary.addSearchPath(
            RuntimeUtil.getLibVlcLibraryName(), vlcHome
        );
        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
    }
}

そのコードを実行して、例外なく完了するかどうかを確認できます。

vlcj の指示は、JRE のアーキテクチャが関連していることも指摘しています。次のように入力して、JRE アーキテクチャを確認する必要があります。

java -version

JRE アーキテクチャは VLC のものと一致する必要があります (おそらく、[バージョン情報] ダイアログで VLC アーキテクチャを確認できます)。両方が等しくなければなりません (32b または 64b)。

ただし、エラー メッセージが、Windows で実行されているvlcまたはvlccoreではなく、 libvlcを参照しているのは奇妙です。

とにかく、 NativeLibraryを使用して VLC パスを検索パスに追加しても機能せず、JRE アーキテクチャが VLC アーキテクチャと一致する場合は、使用しているコードを追加して詳細を調べることができます。

于 2013-01-14T23:01:21.290 に答える
0

エラーが示すように、JVM はネイティブ ライブラリ「libvlc.dll」をロードしようとしていますが、それを見つけることができません。

dll を Java インストールの .../jre/bin ディレクトリに配置するか、java.library.pathプロパティを使用してその場所を指定します。

Eclipse の起動時に (オーバーライドする代わりに) ネイティブ ライブラリを "java.library.path" に追加する方法も参照してください。

于 2013-01-14T14:51:54.533 に答える