Java 如何在Eclipse项目中设置HtmlUnit?

Java 如何在Eclipse项目中设置HtmlUnit?,java,eclipse,jar,executable,htmlunit,Java,Eclipse,Jar,Executable,Htmlunit,我的项目包括htmlunit JAR并下载一些页面内容。然而,其中的可执行jar(包括eclipse导出的libs、funct.)只在我创建它的机器上工作(在不同的机器上它不执行) 编辑:它不会执行,因为启动时不会显示“启动无头浏览器”消息框。我使用EclipseIndigo:File>Export>Runnable jar>package-required-library-into-generated jar 救命啊,诸神: import java.io.*; import com.gargo

我的项目包括htmlunit JAR并下载一些页面内容。然而,其中的可执行jar(包括eclipse导出的libs、funct.)只在我创建它的机器上工作(在不同的机器上它不执行)

编辑:它不会执行,因为启动时不会显示“启动无头浏览器”消息框。我使用EclipseIndigo:File>Export>Runnable jar>package-required-library-into-generated 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 ();
}
}

以下是如何设置HtmlUnit以及如何在eclipse中将其导出到可运行的jar文件:

  • 创建新的java项目(所有默认设置)
  • 右键单击项目(在PackageExplorer视图中),转到New->Folder并将其命名为“lib”
  • HtmlUnit库(文件HtmlUnit-2.9-bin.zip)
  • 解压并将解压文件的“/htmlunit-2.9/lib/”文件夹的内容复制到我们的文件夹“lib”中(您可以从windows/linux桌面拖放eclipse包资源管理器中的所有文件,并选择复制文件)
  • 再次右键单击项目,然后转到生成路径->配置生成路径
  • 在“库”选项卡中,单击“添加JAR…”
  • 查找我们的新库文件夹(如果您没有看到它,请关闭窗口并再次转到包资源管理器,选择项目文件夹并按F5键,然后从步骤5开始执行)
  • 选择该文件夹中的所有文件(HtmlUnit 2.9中的17个文件)并关闭所有窗口
  • 通过创建一个非常简单的应用程序来检查一切是否正常(我碰巧在此编写了一个简单的代码,可能会对您有所帮助)
  • 一切都应该正常(如果不是,请重新检查步骤),因此让我们通过右键单击项目并选择导出来导出应用程序
  • 查找Java/Runnable JAR文件并单击Next
  • 选择适当的启动配置和目标,如果只需要一个包含应用程序和HtmlUnit的大文件,请选择“将所需库打包到生成的JAR中”,然后单击finish
  • 打开JAR文件所在的控制台,执行“java-JAR-yourJARfile.JAR”并欣赏您的应用程序

  • 如果这对新项目有效,则更新您自己的项目以反映列表中所采取的步骤。希望这对默认设置的新java项目有所帮助 从下载库中最新版本的HTMLUnit 选择新建项目属性->Java构建路径->转到库选项卡并添加提取的所有jars文件。 在新项目中使用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();
    }`
    

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

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


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

    为什么您觉得它没有在其他机器上执行?我猜其他机器在类路径中没有所需的jar。发布错误。没有stacktrace、进一步的代码等,我们对如何回答您的问题有点茫然。我更新了我的问题。请修改。我没有看到任何错误,因为当我“双击”目标机器上的文件时,什么也没有发生。你是说eclipse没有处理类路径吗?我不知道stacktrace是什么,我的道歉。
    线程“main”java.lang.IllegalArgumentException中的异常:找不到声明的字段类org.apache.http.impl.client.HttpClientBuilder.dnsResolver
    我得到了上述异常,有人能提供解决方案吗,请用HTML单元上传project Structure的图片/图像好吗