2012-01-03 14 views
5

Używam jednostki HTML, aby przejść do strony internetowej, wypełnić niektóre formularze i kliknąć przycisk, aby przejść do następnej strony internetowej. Ta nowa strona (zwana newPage w moim kodzie) jest tym, z którego wydobywam źródło html.Android: Błąd CSS podczas korzystania z jednostki HTML i Eclipse

Metoda ta sprawdza się doskonale w Netbeans (choć daje nadmierną ilość ostrzeżeń)

import org.jsoup.Jsoup; 

/* Regular (textview, button, etc) imports */ 

import com.gargoylesoftware.htmlunit.BrowserVersion; 
import com.gargoylesoftware.htmlunit.Page; 
import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlAnchor; 
import com.gargoylesoftware.htmlunit.html.HtmlElement; 
import com.gargoylesoftware.htmlunit.html.HtmlForm; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; 
import com.gargoylesoftware.htmlunit.html.HtmlTextInput; 


     String username = "USERNAME", school = "SCHOOL", userpassword = "PASSWORD"; 
     HtmlElement loginName = null; 
     HtmlElement password = null; 
     //HtmlPage newPage; 
     HtmlAnchor anchorByHref = null; 
     try { 
      WebClient webClient = new WebClient(); 
      final HtmlPage page = webClient 
        .getPage("https://cupertino.schoolloop.com/portal/login?d=x&return_url=1325402408153"); 
      loginName = page.getElementByName("login_name"); 
      password = page.getElementByName("password"); 
      loginName.setTextContent(username); 
      loginName.setAttribute("value", username); 
      password.setAttribute("value", userpassword); 
      password.setTextContent(userpassword); 
      anchorByHref = page 
        .getAnchorByHref("javascript:document.form.event_override.value='login';document.form.submit();"); 
      HtmlPage newPage = anchorByHref.click(); 

      webClient.waitForBackgroundJavaScript(10000); 
      String html = newPage.getWebResponse().getContentAsString(); 


      message2.setText(html); 
     } catch (Exception e) { 
      e.printStackTrace(); 

     } 


} 

Jednak w Eclipse z systemem Android, to mówi

01-02 17:38:54.099: E/dalvikvm(23163): Could not find class 'org.w3c.dom.css.CSSCharsetRule', referenced from method com.gargoylesoftware.htmlunit.javascript.host.css.CSSCharsetRule.getCharsetRule 

w LogCat.

Również, nie ustawia tekstu wiadomości2 jako HTML chcę, chociaż kiedy próbuję tego w Netbeans i wydrukuję "html", to faktycznie wydrukuje pełne źródło HTML strony!

Podsumowując, istnieją 2 problemy. Eclipse nie otrzymuje html i podaje komunikat o błędzie, że nie może znaleźć klasy CSSCharsetRule. Myślę, że zaimportowałem odpowiedni plik .jar, ale nie jestem pewien, ponieważ w jednostce HTML znajduje się około 15 znaków .jar i nie mogę ich zaimportować, ponieważ aplikacja ma problemy z emulatorem i telefonem.

I have figured out that the error was due to not importing xml-apis-1.3.04.jar (which was imported in the Netbeans Project). 

Jednak teraz mogę napotkać

"Konwersja do Dalvik Format zakończyła się błędem 1"

błąd.

Czy jest możliwe, że którykolwiek z problemów spowodowałby wartość Null w html i jak mogę naprawić błąd konwersji Dalvik?

.jar Eclipse (zbyt wiele czyni app ciężki, a tym xml-apis powoduje Dalvik błąd)

pliki jar w NetBeans (roboczy)

+0

zaimportować znaczenie, aby dodać je do ścieżki budowania w Eclipse *. Dodanie JUnit jako jednego ze słoików pomogło. – Kgrover

Odpowiedz

1

Myślę, że masz problem ze ścieżką klasową w ramach zaćmienia:

Could not find class 'org.w3c.dom.css.CSSCharsetRule' 

Czy wszystkie słoiki są dołączone do ścieżki budowania?

Conversion to Dalvik Format Failed with Error 1 

Ten mówi mi, że jeden z * .class nie można convertet do pliku * DEX-

Może masz dwa pliki JAR z tej samej klasy Wewnątrz:

Rozwiązałem problem.

Wygląda na to, że mam dwa słoiki na mojej ścieżce budowania, które zawierają ten sam pakiet i klasy .

"Conversion to Dalvik format failed with error 1" on external JAR

edit Aby odnaleźć duplikaty Classes, wyodrębnić wszystkie słoiki z ulubionym unzip-narzędzia i czekać na "Plik aready istnieje".

+0

Jak ustalić, które pliki .jar są w konflikcie? Czy uważasz, że jest to powód, dla którego zmienna html zwróci wartość null? (Bez zawartości) ponownie, jeśli zaimportuję * wszystkie * słoiki w Netbeans, to działa. Jeśli zaimportuję wszystkie słoiki w Eclipse, aplikacja stanie się zbyt ciężka. Edytowałem swoją odpowiedź ze zdjęciami słoików zaimportowanych w każdym IDE, jeśli to pomoże. – Kgrover

+0

również, myślę, że dodanie słoika xml-apis jest tym, co * ma * klasa "org.w3c.dom.css.CSSCharsetRule", ale to właśnie powoduje błąd Dalvik. – Kgrover

+0

Dziękuję za JARS, proszę rozszerzyć zaćmienie ADT i Android ClassPath Container. Może masz tam zduplikowane interfejsy API. –

Powiązane problemy