Я использую API last.fm для JAVA, который можно найти здесь .
У меня есть огромный набор данных, в котором я использую только файл с историей исполнителя пользователя. и играет. Я написал код на Java, который извлекает имена исполнителей и возвращает похожих исполнителей на основе метода Artist.getSimilar()
.
Я запускал его один раз, но не для всех художников. Я прекратил отладку на полпути. Однако в следующий раз мои результаты возвращались из кеша, и запрос больше не отправлялся на веб-сервер. Проблема в том, что на этот раз я получаю результаты только до исполнителя, у которого я закончил результаты. Я попытался использовать другой метод для artists=Artist.getTopAlbums()
, где остановился на полпути и в следующий раз столкнулся с той же проблемой. Ошибка, которую я получаю:
[Fatal Error] :513:9: <strong>XML document structures must start and end within the same entity.</strong>
Exception in thread "main" de.umass.lastfm.CallException: org.xml.sax.SAXParseException; lineNumber: 513; columnNumber: 9; XML document structures must start and end within the same entity.
Caused by: org.xml.sax.SAXParseException; lineNumber: 513; columnNumber: 9; XML document structures must start and end within the same entity.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:251)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)
и куча других исключений, которые здесь не важны.
Я попытался переустановить eclipse, запустить eclipse в режиме -clean
и очистить рабочее пространство. Ничего не сработало. Я тоже создал новую рабочую область, но кеш продолжает возвращаться. Я использую Eclipse 3.8. Может быть, поможет эффективный способ очистки кеша в eclipse? Как бы я это сделал. Кажется, ничего не работает. (Также нет возможности вручную очистить кеш в Window>Preferences, как предлагалось во многих статьях).
Или мне нужно сделать что-то еще? Любая помощь горячо приветствуется. Заранее спасибо.
Мой java-код (который работает отлично, без ошибок):
//in main
BufferedReader inp = new BufferedReader (new InputStreamReader(System.in));
String sinput=inp.readLine();
System.out.println(sinput+"\t \t \t"+getSimilarartists(sinput));
//to fetch similar artists
public static StringBuilder getSimilarartists(String artist){
String key = "af2bfbcb4dd49870fdb8e92f128f4ff7";
StringBuilder sb = new StringBuilder();
String art=(Artist.getSimilar(artist, key)).toString();
int i=0;
while(i<art.length()-5){
if((art.substring(i, (i+4))).equalsIgnoreCase("name")){
i=i+6;
while(art.charAt(i)!='\''){
sb.append(art.charAt(i));
i++;
}
break;
}
i++;
}
return sb;
}
Вывод (только последние несколько строк):
hans zimmer; I recommend=Hans Zimmer & James Newton Howard<br>
nelly furtado; I recommend=Jennifer Lopez<br>
madonna; I recommend=Kylie Minogue<br>
blink-182; I recommend=Box Car Racer<br>
dave gahan; I recommend=Depeche Mode<br>
kelly clarkson; I recommend=Carrie Underwood<br>
lucie silvas; I recommend=Delta Goodrem<br>
natalie imbruglia; I recommend=Melanie C<br>
michelle branch; I recommend=The Wreckers<br>
delta goodrem; I recommend=Ricki-Lee<br>
new order; I recommend=Electronic<br>
seal; I recommend=Simply Red<br>
atomic kitten; I recommend=Liberty X
*** (this is where I had terminated my previous run) ***
[Fatal Error] :513:9: XML document structures must start and end within the same entity.<br>
Exception in thread "main" de.umass.lastfm.CallException: org.xml.sax.SAXParseException; lineNumber: 513; columnNumber: 9; XML document structures must start and end within the same entity.
at de.umass.lastfm.Caller.call(Caller.java:268)<br>
at de.umass.lastfm.Caller.call(Caller.java:189)<br>
at de.umass.lastfm.Caller.call(Caller.java:185)<br>
at de.umass.lastfm.Artist.getSimilar(Artist.java:144)<br>
at de.umass.lastfm.Artist.getSimilar(Artist.java:132)<br>
at Recommender.getSimilarartists(Recommender.java:89)<br>
at Recommender.main(Recommender.java:58)<br>
Caused by: org.xml.sax.SAXParseException; lineNumber: 513; columnNumber: 9; XML document structures must start and end within the same entity.<br>
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:251)
at <br>
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)<br>
at de.umass.lastfm.Caller.createResultFromInputStream(Caller.java:324)<br>
at de.umass.lastfm.Caller.call(Caller.java:256)<br>
... 6 more