【发布时间】:2012-06-08 22:38:00
【问题描述】:
我正在尝试使用从另一个 stackoverflow 页面 (here) 获得的一组简单代码行来非常简单地使用 JavaFX。但是,问题显然不在于该代码,而在于构建和运行过程中更基本的东西。
这是我的代码:
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
.
.
.
Media medMsg = new Media("msg.mp3");
MediaPlayer medplMsg = new MediaPlayer(medMsg);
medplMsg.play();
起初我根本无法编译它。最终我发现我需要将 -classpath c:\Program Files\Oracle\JavaFX 2.1 SDK\lib\rt\jfxrt.jar 放在我的 javac 命令行上。 (这里一个明显的复杂问题是:为什么没有在任何明显的地方记录(1)这是需要的,(2)如何准确地确定 JavaFX 安装的路径是什么?!)
但是,当我运行代码时,我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: javafx/scene/media/Media
at progtest.main(progtest.java:120)
Caused by: java.lang.ClassNotFoundException: javafx.scene.media.Media
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
这是什么意思?看起来它在运行时不知道如何找到 javafx.scene.media.Media 类。但是,我的 %CLASSPATH% 变量中肯定有“c:\Program Files\Oracle\JavaFX 2.1 SDK\lib\rt\jfxrt.jar”。
有什么想法吗?提前谢谢!
【问题讨论】:
-
我认为您的设置有问题。不必将任何 JavaFX jar 手动放在类路径中。您是如何构建和运行 JavaFX 应用程序的?使用 NetBeans 提供的 ant 脚本?
-
不,我没有使用 NetBeans,而是直接从控制台工作。我的 javac 行是:'javac -classpath "c:\Program Files\Oracle\JavaFX 2.1 SDK\rt\lib\jfxrt.jar";..\bin -d ..\bin ..\src\progtext.java'
标签: java runtime mp3 javafx noclassdeffounderror