2015-02-09 45 views
3

我試圖創建HtmlUnit WebClient以解析Glassfish服務器上Java EE Servlet filter內的Ember應用程序網頁。嘗試在Glassfish上創建WebClient時出現NoSuchMethodError

servlet代碼:

final WebClient webClient = new WebClient(); // causes error 
    HtmlPage page = webClient.getPage(originalUrl); 

的pom.xml

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.enunciate</groupId> 
      <artifactId>maven-enunciate-plugin</artifactId> 
      <version>1.29</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>assemble</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <configFile>enunciate.xml</configFile> 
       <enunciateArtifactId/> 
       <enunciateArtifactId/> 
       <moduleName/> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.2</version> 
      <configuration> 
       <source>1.5</source> 
       <target>1.5</target> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <warSourceExcludes>**/web.xml</warSourceExcludes> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet</artifactId> 
     <version>2.15</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>net.sourceforge.htmlunit</groupId> 
     <artifactId>htmlunit</artifactId> 
     <version>2.15</version> 
    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.34</version> 
    </dependency> 

    <dependency> 
     <groupId>org.codehaus.enunciate</groupId> 
     <artifactId>enunciate-rt</artifactId> 
     <version>1.29</version> 
    </dependency> 

    <dependency> 
     <groupId>org.igniterealtime.smack</groupId> 
     <artifactId>smack-core</artifactId> 
     <version>4.0.6</version> 
    </dependency> 

    <dependency> 
     <groupId>org.igniterealtime.smack</groupId> 
     <artifactId>smack-tcp</artifactId> 
     <version>4.0.6</version> 
    </dependency> 

    <dependency> 
     <groupId>org.igniterealtime.smack</groupId> 
     <artifactId>smack-extensions</artifactId> 
     <version>4.0.6</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.googlecode.json-simple</groupId> 
     <artifactId>json-simple</artifactId> 
     <version>1.1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>com.paymill</groupId> 
     <artifactId>paymill-java</artifactId> 
     <version>5.0.0</version> 
    </dependency> 

    <dependency> 
     <groupId>org.mindrot</groupId> 
     <artifactId>jbcrypt</artifactId> 
     <version>0.3m</version> 
    </dependency> 

    <dependency> 
     <groupId>com.restfb</groupId> 
     <artifactId>restfb</artifactId> 
     <version>1.7.1</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.api-client</groupId> 
     <artifactId>google-api-client</artifactId> 
     <version>1.19.1</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.http-client</groupId> 
     <artifactId>google-http-client-jackson</artifactId> 
     <version>1.19.0</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.apis</groupId> 
     <artifactId>google-api-services-plus</artifactId> 
     <version>v1-rev209-1.19.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.codemonkey.simplejavamail</groupId> 
     <artifactId>simple-java-mail</artifactId> 
     <version>2.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.quartz-scheduler</groupId> 
     <artifactId>quartz</artifactId> 
     <version>2.2.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.7.10</version> 
    </dependency> 
</dependencies> 

錯誤:

java.lang.NoSuchMethodError: org.apache.http.impl.cookie.BrowserCompatSpecFactory.create(Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/cookie/CookieSpec; 
    at com.gargoylesoftware.htmlunit.CookieManager.<init>(CookieManager.java:54) 
    at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:136) 
    at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:199) 
+0

看起來像是http客戶端版本中的衝突。你正試圖使用​​(作爲依賴添加)4.4。 Google Http客戶端依賴於[' 4.0.1'](http://central.maven.org/maven2/com/google/http-client/google -http-client-parent/1.19.0/google-http-client-parent-1.19.0.pom) – 2015-02-09 14:55:17

+0

您可以忽略來自deps列表的org.apache.httpcomponents:httpclient:4.4,即使沒有它,也會出現錯誤。 – 2015-02-09 14:56:53

+0

剛剛刪除了com.google.http-client:google-http-client-jackson:1.19.0。同樣的錯誤。所以這不是問題。什麼干擾HtmlUnit依賴? – 2015-02-09 15:35:31

回答

0

顯然移動HtmlUnit依賴關係到依賴關係列表的底部解決了這個問題。像提到的peeskillet一樣,這不是一個完整的解決方案,因爲我們仍然不知道是什麼原因造成了這個問題,但它作爲第一個解決方案。如果你找到罪魁禍首,請回答。

0

我有同樣的錯誤,但html單元不是解決方案。我把httpclient.jar放在頂部,這樣問題就解決了。

相關問題