0

htmlunitを使用してWebサイトからデータを取得したいと考えています。フォームから属性としてアドレスを渡します。.jarファイルがインポートされ、javadocファイルの場所が正しく設定されていても、エラーが発生し続けます。「java.lang.NoClassDefFoundError:com / gargoylesoftware / htmlunit/WebClient」と表示されます。私は何かが足りないのですか?

package coreservlets;

import java.io.IOException;    
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

@WebServlet("/WebScrape")
@SuppressWarnings("serial")
public class WebScrape extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException {

    PrintWriter out = response.getWriter(); 

    // Create and initialize WebClient object
    final WebClient webClient = new WebClient();

    String Address = (String) request.getAttribute("address");
    HtmlPage page = webClient.getPage(Address);
    final HtmlDivision div = (HtmlDivision) page.getByXPath("//*[@id=\"LDPOffMarketPropertyInfo\"]//div//ul//li[4]//span[1]//text()");

    out.println("<!DOCTYPE html>\n" +
              "<html>\n" +
              "<head>\n" +
              "<meta name=" + "\"viewport\" " +  "content=" + "\"initial-scale=1.0, user-scalable=no\" " + "/>\n" +
              "<style type=" + "\"text/css\">\n" +
                "  html { height: 100% }\n" +
                "  body { height: 100%; margin: 0; padding: 0 }\n" +
                "  #default { height: 800px;\n"+
                "            width: 400px;  }\n" +
                "  </style>\n" + div);

    }   


}
4

1 に答える 1

2

Eclipse を使用すると仮定すると、ビルド パスは、アプリケーションのビルドに使用される一連のライブラリです。

また、webapp 内で実行時にライブラリを使用できるようにする必要があります。サーブレットの仕様では、webapp のライブラリが必要な場所が説明されていますWEB-INF/lib

jar ファイルをビルド パスから削除し、WEB-INF/libWebContent ディレクトリのフォルダーにドロップします。これにより、それらがビルド パスに自動的に追加され、デプロイされたアプリケーションの一部になるため、実行時に使用できるようになります。

これらは、Eclipse のパッケージ エクスプローラーのWeb アプリ ライブラリノードの下にも表示され、これらのライブラリが Web アプリの一部であることを確認します。

于 2012-07-30T21:40:25.877 に答える