使用vlcj时,Basic MediaPlayer会产生NoClassDefFoundError,NativeLibrary问题?

时间:2015-07-03 08:45:42

标签: java netbeans vlcj nativelibrary

我尝试使用vlcj在netbeans(java)中播放视频,但我收到此消息...我假设它与nativeLibrary有关但我不确定如何做到这一点,我似乎无法在网上找到答案。

package movieplayer;

import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;

import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.player.MediaPlayerFactory;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
import uk.co.caprica.vlcj.player.embedded.windows.Win32FullScreenStrategy;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

public class MediaPlayer extends JPanel {


    public static void main(String[] args) {
        JFrame ourframe = new JFrame();
        ourframe.setLocationRelativeTo(null);
        ourframe.setSize(720, 560);
        ourframe.setVisible(true);
        ourframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Canvas c = new Canvas();
        c.setBackground(Color.black);
        JPanel p = new JPanel();
        p.setLayout(new BorderLayout());

        p.add(c);
        ourframe.add(p);

        NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:/Program Files (x86)/VLC/");
        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);

        MediaPlayerFactory mpf = new MediaPlayerFactory();

        EmbeddedMediaPlayer emp = mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(ourframe));
        emp.setVideoSurface(mpf.newVideoSurface(c));

        emp.toggleFullScreen();

        emp.setEnableMouseInputHandling(false);

        emp.setEnableKeyInputHandling(false);

        String file = "C:/Videos/Intro.wmv";

        emp.prepareMedia(file);
        emp.play();

    }
}

这是输出:

run:
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at uk.co.caprica.vlcj.runtime.RuntimeUtil.<clinit>(RuntimeUtil.java:35)
    at movieplayer.MediaPlayer.main(MediaPlayer.java:39)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

我按照本教程视频: https://www.youtube.com/watch?v=XTQ1b3-TUI4

1 个答案:

答案 0 :(得分:2)

它说它无法找到记录器Slf4j,你可以下载它 http://www.slf4j.org/download.html

或使用mvn api

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.12</version>
</dependency>

实施

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.12</version>
</dependency>

或gradle(也可以在http://mvnrepository.com/上找到)

(注意:如果你不使用其中任何一个,我建议(据我所知它并不重要),但我发现这很方便)