2012-02-01 33 views
8

Dự án của tôi bao gồm các lọ htmlunit và tải xuống một số nội dung của trang. Jar thực thi (bao gồm libs, funct. Của eclipse export), tuy nhiên, chỉ hoạt động trên máy mà tôi đã tạo nó (trên nó không thực thi).Làm thế nào để thiết lập HtmlUnit trong một dự án Eclipse?

EDIT: Nó không thực thi vì nó không hiển thị MessageBox "Bắt đầu từ trình duyệt không đầu" khi khởi động. Tôi sử dụng Eclipse Indigo: File> Export> Runnable jar> gói libratries cần vào jar tạo

Help, vị thần:

import java.io.*; 
import com.gargoylesoftware.htmlunit.BrowserVersion; 
import com.gargoylesoftware.htmlunit.Page; 
import com.gargoylesoftware.htmlunit.RefreshHandler; 
import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.html.HtmlTextInput; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import javax.swing.*; 
import javax.swing.filechooser.FileSystemView; 

EDIT: Mã hơn nữa, theo yêu cầu

public class MyTest 
{ 
public static void main(String[] arguments) { 
try{ 
JOptionPane.showMessageDialog(null, "Starting Headless Browser"); 
JFileChooser fr = new JFileChooser(); 
FileSystemView fw = fr.getFileSystemView(); 
String MyDocuments = fw.getDefaultDirectory().toString(); 

FileInputStream fstream = new FileInputStream(MyDocuments+"\\Links.txt"); 
DataInputStream in = new DataInputStream(fstream); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
String strLine; 
String strLineID; 

FileWriter xfstream = new FileWriter(MyDocuments+"\\NewPageContentList.txt"); 
BufferedWriter out = new BufferedWriter(xfstream); 
while ((strLineID = br.readLine()) != null) { 
strLine = br.readLine(); 
out.write(strLineID); 
out.write("\r\n"); 
out.write(DownloadPage(strLine)); 
out.write("\r\n"); 
} 

out.close(); 
in.close(); 
JOptionPane.showMessageDialog(null, "HeadLess Browser Process Has Finished"); 
} 

catch (Exception e){ 
JOptionPane.showMessageDialog(null, "error"); 
} 
} 

public static String DownloadPage(String str){ 
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6); 
webClient.setThrowExceptionOnScriptError(false); 

try{ 
final HtmlPage page = webClient.getPage(str); 
final String pageAsText = str_replace("\n","",str_replace("\r","",page.asText())); 

return pageAsText; 
} 

catch(IOException e){ 
JOptionPane.showMessageDialog(null, "error"); 
} 

webClient.closeAllWindows(); 
return ""; 
} 

public static String str_replace (String search, String replace, String subject) 
{ 
StringBuffer result = new StringBuffer (subject); 
int pos = 0; 
while (true) 
{ 
pos = result.indexOf (search, pos); 
if (pos != -1) 
result.replace (pos, pos + search.length(), replace); 
else 
break; 
} 

return result.toString(); 
} 
} 
+0

Tại sao bạn cảm thấy nó không hoạt động trên máy khác? Tôi đoán là máy khác không có các lọ cần thiết trong classpath. Đăng lỗi. –

+1

Nếu không có một stacktrace, thêm mã, vv chúng tôi đang có một chút trong bóng tối như thế nào để trả lời câu hỏi của bạn. –

+0

Tôi đã cập nhật Câu hỏi của mình. Vui lòng sửa lại. Tôi không thấy bất kỳ lỗi nào vì không có gì xảy ra khi tôi "doubleclick" tệp trên máy đích. Bạn có đề xuất nhật thực đã không handeled classpath? Tôi không biết stacktrace là gì, ứng dụng của tôi. – John

Trả lời

20

này là làm thế nào để thiết lập HtmlUnit và cách xuất nó vào tệp jar có thể chạy được trong nhật thực:

  1. Tạo một dự án java mới (tất cả defa thiết lập ult)
  2. Nhấp chuột phải vào dự án (trong giao diện gói explorer) và đi đến New-> Folder và đặt tên là "lib"
  3. Download thư viện HtmlUnit (file htmlunit-2.9-bin.zip)
  4. Giải nén nó và sao chép vào thư mục "lib" của chúng tôi nội dung của thư mục "/htmlunit-2.9/lib/" của tập tin không nén (bạn có thể kéo và thả từ cửa sổ/linux máy tính để bàn tất cả các tập tin trong trình thám hiểm gói eclipse và chọn để sao chép các tập tin)
  5. Nhấp chuột phải vào dự án một lần nữa và vào Build Path-> Configure Build Path ...
  6. Trong tab Thư viện bấm vào Thêm JAR ...
  7. Tìm thư mục thư viện mới của chúng tôi (nếu bạn không nhìn thấy nó đóng cửa sổ và đi đến trình thám hiểm gói một lần nữa, hãy chọn thư mục dự án và nhấn F5 và tiếp tục từ bước 5)
  8. Chọn tất cả các tệp bên trong thư mục (17 tệp trong HtmlUnit 2.9) và đóng tất cả các cửa sổ
  9. Kiểm tra xem mọi thứ có ổn không bằng cách tạo một ứng dụng rất đơn giản (tôi đã viết một mã đơn giản trong số này question có thể giúp bạn)
  10. Mọi thứ sẽ ổn (nếu không, hãy kiểm tra lại các bước), vì vậy hãy xuất ứng dụng bằng cách nhấp chuột phải vào dự án và chọn Xuất ...
  11. Tìm Java/Runnable JAR f và nhấp vào Tiếp theo
  12. Chọn cấu hình khởi chạy, đích và chọn "Thư viện yêu cầu gói vào JAR được tạo" nếu bạn chỉ muốn một tệp lớn chứa ứng dụng của bạn và HtmlUnit và nhấp vào kết thúc
  13. Mở bảng điều khiển trong đó JAR của bạn tệp cư trú và thực hiện "java -jar yourJARfile.jar" và tận hưởng ứng dụng của bạn

Nếu điều này làm việc cho một dự án mới thì hãy cập nhật dự án của riêng bạn để phản ánh các bước được thực hiện trong danh sách. Hy vọng điều này sẽ giúp

+0

Xin chào Mosty, bạn có thể tải lên hình ảnh/hình ảnh của structrue dự án bằng cách sử dụng đơn vị HTML không –

0

Dự án java mới có cài đặt mặc định tải xuống phiên bản mới nhất của HTMUnit từ Download Latest HTMLUnit jar Chọn thuộc tính dự án mới-> Java Build Path -> chuyển đến tab thư viện và thêm tất cả các tệp đã trích xuất. Tạo một lớp mới với phương thức chính trong dự án mới của bạn và chạy một appliation đơn giản và thêm phương thức này vào lớp và gọi nó theo phương thức chính.

`@Test 
public void getElements() throws Exception { 
final WebClient webClient = new WebClient(); 
final HtmlPage page = webClient.getPage("http://some_url"); 
final HtmlDivision div = page.getHtmlElementById("some_div_id"); 
final HtmlAnchor anchor = page.getAnchorByName("anchor_name"); 

webClient.closeAllWindows(); 
}` 
0

Tôi đã thử các câu trả lời ở trên và chúng không hiệu quả đối với tôi.

Chúng cần thiết nhưng tôi có một dự án web động nên tôi cũng cần thêm tất cả các tệp .jar của tôi vào thư mục lib trong thư mục WEB-INF.

ví dụ: ProjectName \ WebContent \ WEB-INF \ lib (tất cả các tệp .jar bạn đang sử dụng)

Các vấn đề liên quan