2012-02-01 4 views
8

私のプロジェクトにはhtmlunit jarが含まれており、いくつかのページコンテンツをダウンロードしています。実行可能なjar(libs、eclipse exportのfunctを含む)は、作成したマシンでのみ動作します(実行されないものとは異なります)。EclipseプロジェクトでHtmlUnitを設定するには?

EDIT:それは起動時にメッセージボックス「ヘッドレスブラウザを起動」を示していないとして、それが実行されません。要求されたよう

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

なぜ他のマシンで実行されていないと感じますか?私の推測では、他のマシンはクラスパスに必要なjarを持っていないということです。エラーを投稿してください。 –

+1

stacktraceやコードなどがなければ、あなたの質問にどのように答えるか、暗闇の中に少しあります。 –

+0

私は自分の質問を更新しました。改訂してください。私はターゲットマシン上のファイルを「ダブルクリック」しても何も起こらないので、何のエラーも表示されません。あなたはEclipseがクラスパスをハンドリングしていないことを示唆していますか?私はスタックトレースが何であるか、私の考え方はわかりません。 – John

答えて

20

さらにコード、これはどのようにある:

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:生成されたjarファイル

ヘルプ、神々にファイル]> [エクスポート]> [Runnableをjarファイル>パッケージに必要なlibratries:私は、Eclipseインディゴを使用しましたHtmlUnitを設定し、それをeclipseのrunnable jarファイルにエクスポートする方法:

  1. 新しいJavaプロジェクトを作成する(すべてのdefa ULT設定)パッケージエクスプローラービューでプロジェクト(上
  2. 右クリック)とは、フォルダと名前を付け、「LIB」
  3. Download HtmlUnitライブラリ(ファイルhtmlunit-2.9-bin.zip)
  4. >新規作成に進みますそれを解凍し、解凍したファイルの "/htmlunit-2.9/lib/"フォルダの内容を "lib"フォルダにコピーします(Windows/Linuxデスクトップから、Eclipseのパッケージエクスプローラ内のすべてのファイルをドラッグアンドドロップしてコピーすることができますファイル)
  5. プロジェクトを右クリックして、ビルドパス - >ビルドパスを設定...
  6. ライブラリのタブで[JARを追加]をクリックしてください...
  7. 新しいライブラリフォルダを探します(ウィンドウを閉じずにパッケージエクスプローラに再度アクセスし、プロジェクトフォルダを選択してF5キーを押し、手順5から実行します)
  8. その中のすべてのファイルを選択しますフォルダ(HtmlUnit 2.9で17個のファイル)と、すべてが非常に簡単なアプリケーションを作成することでOKであればチェックし、すべてのウィンドウに
  9. を閉じて(私はあなたを助けるかもしれないこのquestionで簡単なコードを書かれているために起こった)
  10. すべては問題ないはずですJavaの/ RunnableをJAR fの(そうでない場合は、手順を再確認)、これはのは、プロジェクトを右クリックし、[エクスポート]を選択することで、アプリケーションをエクスポートしてみましょう...
  11. ルックileを選択してNextをクリックします
  12. アプリケーションとHtmlUnitを含む1つの大きなファイルを作成し、終了をクリックする場合は、適切な起動設定、宛先を選択してください。
  13. JARファイルを保存して "java -jar yourJARfile.jar"を実行してアプリケーションをお楽しみください。

新しいプロジェクトでこれが機能する場合は、自分のプロジェクトを更新してリストの手順を反映させます。 > [ライブラリ]タブに移動し、抽出されたすべてのjarファイルを追加 - これはデフォルトの設定で

+0

こんにちはMosty、あなたは画像/ HTMLのユニットを使用してプロジェクトstructrueの画像をアップロードしてください –

0

新規JavaプロジェクトDownload Latest HTMLUnit jar からHTMUnitの ダウンロードライブラリ最新版ビルド・パスの新しいプロジェクトプロパティ - > Javaの選択に役立ちます願っています。 新しいプロジェクト内で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(); 
}` 
0

私は上記の回答を試みたが、私のために働かなかった。

これらは必要ですが、私は動的なWebプロジェクトを持っていたので、すべての.jarファイルをWEB-INFディレクトリのlibディレクトリに追加する必要がありました。

ProjectName \ WebContent \ WEB-INF \ lib(使用しているすべての.jarファイル)

関連する問題