Basic MediaPlayer 在使用 vlcj 时给出 NoClassDefFoundError,NativeLibrary 问题?
Basic MediaPlayer gives a NoClassDefFoundError when using vlcj, NativeLibrary issue?
我正在尝试使用 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
说找不到记录器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/上找到)
(注意:如果你不使用它们,我推荐(据我所知,哪个并不重要),但我觉得很方便)
我正在尝试使用 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
说找不到记录器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/上找到)
(注意:如果你不使用它们,我推荐(据我所知,哪个并不重要),但我觉得很方便)