2017-12-26 7 views
0

Ich erstelle eine einfache VLCJ-Anwendung in Java, um Video von einem JFrame abzuspielen. Beim Ausführen der Anwendung bekomme ich immer eine ClassNotFound Ausnahme. Hinweise auf das, was vor sich geht, wären sehr willkommen.EmbeddedMediaPlayerComponent ClassNotFound-Ausnahme beim Ausführen einer einfachen vlcj-Anwendung

App.java:

import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent; 
import uk.co.caprica.vlcj.discovery.NativeDiscovery; 

public class App { 
    private static JFrame mainFrame; 

// media player component 
private static EmbeddedMediaPlayerComponent mediaPlayerComponent; 

public static void main(String[] args) { 
    new NativeDiscovery().discover(); 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      new App(); 
     } 
    }); 
} 

public App() { 
    // initialize a jframe to frame the video we will eventually be displaying 
    mainFrame = new JFrame("My First Video Player"); 
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    mainFrame.setSize(500, 500); 

    // initialize the media player component: 
    mediaPlayerComponent = new EmbeddedMediaPlayerComponent(); 

    // add media player component onto the mainFrame 
    mainFrame.setContentPane(mediaPlayerComponent); 
    mainFrame.setVisible(true); 
} 
} 

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.vismark</groupId> 
<artifactId>MediaTransmitter</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>MediaTransmitter</name> 
<url>http://maven.apache.org</url> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <!-- VLCJ dependency for video capability --> 
    <dependency> 
     <groupId>uk.co.caprica</groupId> 
     <artifactId>vlcj</artifactId> 
     <version>3.10.1</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/com.sun.jna/jna --> 
    <dependency> 
     <groupId>com.sun.jna</groupId> 
     <artifactId>jna</artifactId> 
     <version>3.0.9</version> 
    </dependency> 

    <!-- compiler would complain at run-time about not being able to find this --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.7.12</version> 
    </dependency> 

</dependencies> 

Fehlermeldung:

log4j:WARN No appenders could be found for logger (uk.co.caprica.vlcj.Info). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/sun/jna/platform/unix/X11$Atom 
    at uk.co.caprica.vlcj.player.MediaPlayerFactory.<clinit>(MediaPlayerFactory.java:175) 
    at uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.onGetMediaPlayerFactory(EmbeddedMediaPlayerComponent.java:349) 
    at uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.<init>(EmbeddedMediaPlayerComponent.java:217) 
    at com.vismark.MediaTransmitter.App.<init>(App.java:32) 
    at com.vismark.MediaTransmitter.App$1.run(App.java:20) 
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) 
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764) 
    at java.desktop/java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:717) 
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:711) 
    at java.base/java.security.AccessController.doPrivileged(Native Method) 
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:89) 
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:734) 
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:199) 
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) 
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) 
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) 
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 
Caused by: java.lang.ClassNotFoundException: com.sun.jna.platform.unix.X11$Atom 
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) 
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) 
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) 
    ... 19 more 

Antwort

0

Überprüfen Sie, ob VLCJ richtig gefunden wird. Setzen Sie dieses in Haupt:

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

Auch diese Linien machen mich ein wenig skeptisch, wenn es VLCJ Schuld ist:

Caused by: java.lang.ClassNotFoundException: com.sun.jna.platform.unix.X11$Atom 
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) 

Da heißt es, dass es nicht JNA finden ....

Wenn ich http://capricasoftware.co.uk/#/projects/vlcj/tutorial/logging richtig verstanden, obwohl nur

<dependency> 
<groupid>uk.co.caprica</groupid> 
<artifactid>vlcj</artifactid> 
<version>3.10.1</version> 
</dependency> 

sollte benötigt werden ...

Verwandte Themen