我的项目包括htmlunit jar并下载一些页面内容。然而,可执行jar(包括libs,eclipse导出功能)只能在我创建它的机器上运行(在不同的情况下它不会执行)。
编辑:它没有执行,因为它在启动时没有显示“Starting Headless Browser”MessageBox。我使用了Eclipse Indigo:File>出口>
帮助,众神:
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 ();
}
}
答案 0 :(得分:20)
这是如何设置HtmlUnit以及如何将它导出到eclipse中的runnable jar文件中:
如果这适用于新项目,则更新您自己的项目以反映列表中采取的步骤。希望这有帮助
答案 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文件)