如何在Eclipse项目中设置HtmlUnit?

时间:2012-02-01 13:17:00

标签: java eclipse jar executable htmlunit

我的项目包括htmlunit jar并下载一些页面内容。然而,可执行jar(包括libs,eclipse导出功能)只能在我创建它的机器上运行(在不同的情况下它不会执行)。

编辑:它没有执行,因为它在启动时没有显示“Starting Headless Browser”MessageBox。我使用了Eclipse Indigo:File>出口> 将所需的libratries打包到生成的jar中

帮助,众神:

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;

编辑:根据要求提供更多代码

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 ();
}
}

3 个答案:

答案 0 :(得分:20)

这是如何设置HtmlUnit以及如何将它导出到eclipse中的runnable jar文件中:

  1. 创建一个新的java项目(所有默认设置)
  2. 右键单击项目(在包浏览器视图中)并转到New-> Folder并将其命名为“lib”
  3. Download HtmlUnit库(文件htmlunit-2.9-bin.zip)
  4. 解压缩并将未压缩文件的文件夹“/htmlunit-2.9/lib/”的内容复制到我们的文件夹“lib”中(您可以从windows / linux桌面拖放eclipse的包浏览器中的所有文件和选择复制文件)
  5. 再次右键单击该项目,然后转到Build Path-> Configure Build Path ...
  6. 在选项卡库中,单击Add JARs ...
  7. 查找我们的新库文件夹(如果您没有看到它关闭窗口并再次转到包浏览器,请选择项目文件夹并按F5并继续执行步骤5)
  8. 选择该文件夹中的所有文件(HtmlUnit 2.9中的17个文件)并关闭所有窗口
  9. 通过创建一个非常简单的应用程序来检查一切是否正常(我碰巧在此question中编写了一个可能对您有帮助的简单代码)
  10. 一切都应该没问题(如果不是,请重新检查步骤),所以让我们通过右键单击项目并选择导出来导出应用程序......
  11. 查找Java / Runnable JAR文件,然后单击“下一步”
  12. 如果您只想要一个包含您的应用程序和HtmlUnit的大文件并单击完成
  13. ,请选择适当的启动配置,目标并选择“将所需的包打包到生成的JAR”
  14. 打开JAR文件所在的控制台并执行“java -jar yourJARfile.jar”并享受您的应用程序
  15. 如果这适用于新项目,则更新您自己的项目以反映列表中采取的步骤。希望这有帮助

答案 1 :(得分:1)

具有默认设置的新java项目 从Download Latest HTMLUnit jar下载最新版本的HTMUnit库 选择新项目属性 - > Java构建路径 - >转到库选项卡并添加提取的所有jar文件。 在新项目中使用main方法创建一个新类,并运行一个简单的应用程序,并在类中添加此方法并在main方法中调用它。

`@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();
}`

答案 2 :(得分:0)

我尝试了上述答案,但它们对我不起作用。

他们是必需的,但我有一个动态的Web项目,所以我还需要将所有.jar文件添加到WEB-INF目录中的lib目录。

e.g。 ProjectName \ WebContent \ WEB-INF \ lib(您正在使用的所有.jar文件)