2011-05-17 126 views
0

嗨 我正在做一個程序來讀取mp3頭。我閱讀site的源代碼。 如果知道這個網站或MP3標題閱讀。請幫幫我。在Android的MP3標題閱讀問題

代碼:

File oSourceFile = new File("D:\\Mp3\\a.mp3"); 

    // create an MP3File object representing our chosen file 
    MediaFile oMediaFile = new MP3File(oSourceFile); 

    // any tags read from the file are returned, in an array, in an order which you should not assume 
    ID3Tag[] aoID3Tag = oMediaFile.getTags(); 
    // let's loop through and see what we've got 
    // (NOTE: we could also use getID3V1Tag() or getID3V2Tag() methods, if we specifically want one or the other) 
    for (int i=0; i < aoID3Tag.length; i++) 
    { 
     // check to see if we read a v1.0 tag, or a v2.3.0 tag (just for example..) 
     if (aoID3Tag[i] instanceof ID3V1_0Tag) 
     { 
      ID3V1_0Tag oID3V1_0Tag = (ID3V1_0Tag)aoID3Tag[i]; 
      // does this tag happen to contain a title? 
      if (oID3V1_0Tag.getTitle() != null) 
      { 
       System.out.println("Title = " + oID3V1_0Tag.getTitle()); 
      } 
      // etc. 
     } 
     else if (aoID3Tag[i] instanceof ID3V2_3_0Tag) 
     { 
      ID3V2_3_0Tag oID3V2_3_0Tag = (ID3V2_3_0Tag)aoID3Tag[i]; 
      // check if this v2.3.0 frame contains a title, using the actual frame name 
      if (oID3V2_3_0Tag.getTIT2TextInformationFrame() != null) 
      { 
       System.out.println("Title = " + oID3V2_3_0Tag.getTIT2TextInformationFrame().getTitle()); 
      } 
      // but check using the convenience method if it has a year set (either way works) 
      try 
      { 
       System.out.println("Year = " + oID3V2_3_0Tag.getYear()); // reads TYER frame 
      } 
      catch (ID3Exception e) 
      { 
       // error getting year.. if one wasn't set 
       System.out.println("Could get read year from tag: " + e.toString()); 
      } 
      // etc. 
     } 
    } 

運行代碼我得到java.lang.NoClassDefFoundError:

我的控制檯輸出:

Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/TestCase 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(Unknown Source) 
at java.security.SecureClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.defineClass(Unknown Source) 
at java.net.URLClassLoader.access$000(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) 
at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
at org.blinkenlights.jid3.test.ID3Test.testWriteV1_0Tag(ID3Test.java:60) 
at org.blinkenlights.jid3.test.ID3Test.main(ID3Test.java:46) 
    Caused by: java.lang.ClassNotFoundException: junit.framework.TestCase 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
    --- testWriteV1_0Tag --- 

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) 
at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
... 14 more 

回答

1

它看起來像testWriteV1_0Tag取決於JUnit,這ISN在你的classpath中。要麼使用JUnit更改代碼(而不是)(並且不要取決於使用JUnit的其他任何內容),要麼將JUnit包含在路徑中。

+0

謝謝,如何將JUnit包含在我的路徑中。 – 2011-05-17 14:30:44

+0

我在我的路徑中包含JID3-0.46.jar。我不明白JUnit。請協助我。 – 2011-05-17 14:32:57

+0

@murali_ma:除非您真的*想要*使用JUnit,否則您應該取出使用它的代碼,而不是將其添加到您的類路徑中。否則,您應該下載JUnit包(請參閱我的答案中的鏈接),並將其包含在您的類路徑中,這取決於您如何運行它。例如,從命令行中可以使用--classpath。 – 2011-05-17 14:56:56