# vlcj läuft nicht exportiert, aber in Eclipse



## Fohnbit (6. Apr 2017)

Hallo,

ich nutze das vlcj Plugin zum abspielen von Videostreams.
In Eclipse funktioniert alles, aber sobald ich es exportiere, erhalte ich:

```
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Unable to load library 'libvlc': JNA native support (win32-x86/libvlc.dll) not found in resource path (X:\software\dlc\Player\Player.jar)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:220)
        at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:322)
        at com.sun.jna.Library$Handler.<init>(Library.java:142)
        at com.sun.jna.Native.loadLibrary(Native.java:387)
        at com.sun.jna.Native.loadLibrary(Native.java:366)
        at player.Player$28.run(Player.java:1471)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
```
Ich habe schon so ziemlich alles versucht:

```
NativeLibrary.addSearchPath(
                                RuntimeUtil.getLibVlcLibraryName(), "X:/software/dlc/Player/");
                        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
                        LibXUtil.initialise();
```
oder

```
boolean found = new NativeDiscovery().discover();
                    System.out.println(found);
                    System.out.println(LibVlc.INSTANCE.libvlc_get_version());
```
oder

```
NativeLibrary.addSearchPath("libvlc", "X:/software/dlc/Player");
```
oder

```
String path = System.getProperty("user.dir");
            System.setProperty("jna.library.path", path);
```

In Eclipse habe ich also keine Probleme, nur wenn ich das Projekt als Lauffähiges JAR exportiere.
Die 2 DLL:
libvlc.dll
libvlccore.dll
sind im root des .jar Files.

Weiß jemand Bescheid wie ich das Projekt einstellen muss, damit der Export funktioniert?

Danke!


----------



## Fohnbit (6. Apr 2017)

Ich habe nun rausgefunden, das ich in Eclipse mit 64bit arbeite und lokal mit 32bit:

```
System.out.println(System.getProperty("sun.arch.data.model"));
```

Ich habe mir hier dir 32bit VLC version heruntergeladen und die DLL eingebaut ... ist ihm egal 
Starte ich das jar mit der 64bit Java läuft es.
Starte ich das jar mit der 32bit Java erhalte ich den Fehler. Scheinbar nimmt er mir immer die 64bit DLL vom installierten VLC?

Danke!


----------



## Fohnbit (6. Apr 2017)

OK, konnte es nun doch lösen ... ich frage im Code ab, ob 32 oder 64bit ist und setze den Pfad entsprechend.
Man muss auch das Plugin Verzeichnis mit angeben.


```
String version = System.getProperty("sun.arch.data.model");
        String vlcLibs = "";

        if ("32".equals(version)) {
            vlcLibs = "X:/software/dlc/Player/lib32/";
        } else {
            vlcLibs = "X:/software/dlc/Player/lib64/";
        }
        NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), vlcLibs);
        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
```

Im Ordner lib32 und lib64 jeweils die passenden libvlc.dll nud libvlccore.dll und das plugin Verzeichnis.
Dann klappt es


----------

