运行简单的VLCJ应用程序时,EmbeddedMediaPlayerComponts classNotFound异常



我在Java中创建一个简单的VLCJ应用程序,以播放Jframe的视频。运行应用程序时,我会继续获得ClassNotFound异常。关于发生的事情的任何线索将不胜感激。

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>

错误消息:

    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

检查是否正确找到VLCJ。将其主要放置:

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

,如果这是vlcj故障,这些行也让我有些怀疑:

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

因为它说它找不到JNA ....

如果我理解http://capricasoftware.co.uk/#/projects/vlcj/tutorial/logging正确地仅

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

应该需要...

相关内容

  • 没有找到相关文章

最新更新