2011-05-17 125 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