2015-06-27 62 views
0

我正在使用JavaZOOM JLayer庫,並且構建了一個播放音樂的小程序。下面是代碼:使用JLayer庫和在命令提示符下運行的錯誤

import javazoom.jl.player.Player; 
import java.io.FileInputStream; 
public class Test { 
    public static void main(String[] args) { 
     try { 
      FileInputStream fis = new FileInputStream(/*SONG PATH*/); 
      Player player = new Player(fis); //<-- Here is the problem 

      player.play(); 
     } catch(Exception e){ 
     } 
    } 
} 

代碼工作時,我使用的IntelliJ IDEA(我可以聽到音樂),但是當我嘗試在命令提示符下運行,它會引發以下錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: javazoom/jl/player/Player 
at Test.main<Test.java:9> 

Caused by: java.lang.ClassNotFoundException: javazoom.jl.player.Player 
at java.net.URLClassLoader.findClass<Unknown Source> 
at java.lang.ClassLoader.loadClass<Unkonwn Source> 
at sun.misc.Launcer$AppClassLoader.loadClass<Unknown Source> 
at java.lang.ClassLoader.loadClass<Unknown Source> 
... 1 more 

我是新使用外部庫,所以我不知道是什麼問題...

PS我認爲這是CLASSPATH變量的問題,但我不知道用它。

回答

0

當您使用帶有javac的命令行編譯代碼時,可以使用外部庫的位置設置-classpath選項。

所以你可以做一些像javac -classpath location\of\library class_to_compile

有關該主題的Oracle文檔非常有用:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

+0

我應該放哪個位置?我知道它在哪裏,但我不知道哪個目錄。我應該把-classpath C:\ Java Libraries \ JLayer1.0.1 \ JLayer1.0.1? –

+0

是的 - 嘗試,然後添加在類路徑後編譯的文件的名稱 – helencrump

+0

我試過,但它說javac:無效標誌C:\ Java庫\ JLayer1.0.1 \ JLayer1.0.1 \ classes \ javazoom \ jl \ player \ Player.class –