# VLCJ libjawt.so nicht gefunden



## sMau90 (12. Sep 2012)

Hey,
Ich versuche grade das folgende einfache Beispiel zur Benutzung von VLCJ zu starten.
Die VLC Klassen können laut einem Test den ich aus dem VLCJ Projekt hab problemlos geladen werden.


```
public class TestFrameVlc {
	
	private final EmbeddedMediaPlayerComponent mediaPlayerComponent;

	  public static void main(final String[] args) {
	    SwingUtilities.invokeLater(new Runnable() {
	      @Override
	      public void run() {
	        new TestFrameVlc();
	      }
	    });
	  }
	  
	  private TestFrameVlc() {
		  
	    JFrame frame = new JFrame("vlcj Tutorial");
	    
	    mediaPlayerComponent = new EmbeddedMediaPlayerComponent();

	    frame.setContentPane(mediaPlayerComponent);
	    
	    frame.setLocation(100, 100);
	    frame.setSize(1050, 600);
	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    frame.setVisible(true);

	    mediaPlayerComponent.getMediaPlayer().playMedia("/home/samu/Desktop/008.mkv");
	  }
}
```

Dabei tritt die folgende Exception auf:

```
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: libjawt.so: cannot open shared object file: No such file or directory
	at com.sun.jna.Native.getWindowHandle0(Native Method)
	at com.sun.jna.Native$AWT.getComponentID(Native.java:1766)
	at com.sun.jna.Native.getComponentID(Native.java:252)
	at uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface.attach(CanvasVideoSurface.java:69)
	at uk.co.caprica.vlcj.player.embedded.DefaultEmbeddedMediaPlayer.attachVideoSurface(DefaultEmbeddedMediaPlayer.java:156)
	at uk.co.caprica.vlcj.player.embedded.DefaultEmbeddedMediaPlayer.onBeforePlay(DefaultEmbeddedMediaPlayer.java:315)
	at uk.co.caprica.vlcj.player.DefaultMediaPlayer.play(DefaultMediaPlayer.java:665)
	at uk.co.caprica.vlcj.player.DefaultMediaPlayer.playMedia(DefaultMediaPlayer.java:203)
	at TestFrameVlc.<init>(TestFrameVlc.java:43)
	at TestFrameVlc.<init>(TestFrameVlc.java:25)
	at TestFrameVlc$1.run(TestFrameVlc.java:20)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:682)
	at java.awt.EventQueue$3.run(EventQueue.java:680)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
```
Ich weis leider nicht so viel damit anzufangen, die Datei die er vermisst gehört zur JRE wenn ich das richtig sehe und nicht zu VLCJ und sie ist auf meinem System auch zu finden und zwar unter: "/usr/lib/jvm/java-7-oracle/jre/lib/amd64" (ich verwende Ubuntu 12.04). Nur wird sie anscheinend wenn ich diesen kleinen Test oben starte nicht gefunden.
Hat jemand ne Idee was ich da machen kann?

Danke schonmal.
Grüße,
sMau


----------



## Marco13 (12. Sep 2012)

Ein bißchen ins blaue: Du kannst mal versuchen, den entsprechenden Pfad zu deinem LD_LIBRARY_PATH hinzuzufügen...


----------



## sMau90 (12. Sep 2012)

Dank für die Antwort, aber leider funktioniert das auch nicht, der Fehler bleibt der Gleiche.

Edit:

Habe grade hier (Bug ID: 6539705 JAWT use results in UnsatisfiedLinkError looking for libmawt.so) einen entsprechenden Bug gefunden und den Workaround ausprobiert der dort vorgeschlagen wird.

```
System.loadLibrary("awt");
```
Das führe ich aus bevor etwas anderes passiert und erhalte folgende Meldung:

```
Exception in thread "main" java.lang.UnsatisfiedLinkError: Native Library /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libawt.so already loaded in another classloader
	at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1905)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1846)
	at java.lang.Runtime.loadLibrary0(Runtime.java:845)
	at java.lang.System.loadLibrary(System.java:1084)
	at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67)
	at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Toolkit.loadLibraries(Toolkit.java:1648)
	at java.awt.Toolkit.<clinit>(Toolkit.java:1670)
	at java.awt.EventQueue.invokeLater(EventQueue.java:1208)
	at javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1290)
	at TestFrameVlc.main(TestFrameVlc.java:13)
```
Also eigentlich scheint es ja geladen zu sein... falls jemand noch ne Idee hat also immer her damit  Ich weis nämlich echt nicht mehr weiter.

Grüße,
sMau


----------



## Marco13 (12. Sep 2012)

Hm... dann hab' ich auch keine konkrete Idee mehr ... aus einem Bauchgefühl heraus würde ich nochmal versuchen, das Erstellen nicht in SwingUtilities.invokeLater zu machen, sondern direkt (auch wenn man das eigentlich nicht machen sollte) aber.... das kann auch kompletter Unfug sein..


----------

