2012-02-01 27 views
8

Mi proyecto incluye htmlunit jar y descarga algunas páginas de contenido. El archivo ejecutable (que incluye libs, función de exportación de eclipse) del mismo, sin embargo, solo funciona en la máquina en la que lo creé (en diferente no se ejecuta).¿Cómo configurar HtmlUnit en un proyecto de Eclipse?

EDITAR: No se ejecuta, ya que no muestra el mensaje "Iniciando el navegador sin cabeza" MessageBox al inicio. Solía ​​Eclipse Indigo: libratries requeridos Archivo> Exportar> frasco Ejecutable> paquete en el tarro generada

Ayuda, dioses:

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: código adicional, conforme a lo solicitado

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

¿Por qué cree que no se está ejecutando en otra máquina? Mi suposición es que otra máquina no tiene los jar requeridos en classpath. Publica el error –

+1

Sin un stacktrace, código adicional, etc. estamos un poco a oscuras en cuanto a cómo responder a su pregunta. –

+0

He actualizado mi pregunta. Por favor revisa. No veo ningún error ya que no ocurre nada cuando hago doble clic en el archivo en la máquina de destino. ¿Estás sugiriendo que eclipse no ha manejado el classpath? No sé qué es stacktrace, mis aplicaciones. – John

Respuesta

20

Esta es la forma para configurar HtmlUnit y cómo exportarlo a un archivo jar ejecutable en eclipse:

  1. Cree un nuevo proyecto Java (todos los defa) ajustes ULT)
  2. clic derecho sobre el proyecto (en la vista Explorador de paquetes) y vaya a Nuevo-> Carpeta y el nombre "lib"
  3. Download biblioteca HtmlUnit (htmlunit-2.9-bin.zip archivo)
  4. Descomprimirlo y copiar en nuestra carpeta "lib" el contenido de la carpeta "/htmlunit-2.9/lib/" del archivo descomprimido (puede arrastrar y soltar desde el escritorio de windows/linux todos los archivos en el explorador de paquetes de eclipse y seleccionar copiar los archivos)
  5. Haga clic con el botón secundario en el proyecto nuevamente y vaya a Ruta de compilación-> Configurar ruta de compilación ...
  6. En la pestaña Bibliotecas, haga clic en Agregar JAR ...
  7. Busque nuestra nueva carpeta de biblioteca (si no la ve, cierre la ventana y vaya de nuevo al explorador de paquetes, seleccione la carpeta del proyecto y presione F5 y continúe desde el paso 5)
  8. Seleccione todos los archivos dentro de ese carpeta (17 archivos en HtmlUnit 2.9) y cierre todas las ventanas
  9. Comprobar si todo está bien mediante la creación de una aplicación muy sencilla (me pasó a haber escrito un código simple en este question que podría ayudarle a)
  10. todo debe estar bien (si no es así, vuelva a verificar los pasos), exportemos la aplicación haciendo clic con el botón derecho en el proyecto y seleccionando Exportar ...
  11. Buscar Java/Runnable JAR f ile y haga clic en Siguiente
  12. Seleccione el lanzamiento apropiada configuración, destino y seleccione "paquete requerido bibliotecas en JAR generado" si desea que sólo un gran archivo que contiene la aplicación y HtmlUnit y hace clic en el acabado
  13. Abrir una consola donde su JAR archivo reside y ejecutar "java-jar yourJARfile.jar" y disfrutar de su aplicación

Si esto funcionó para un nuevo proyecto a continuación, actualizar su propio proyecto para reflejar los pasos dados en la lista. Esperamos que esto ayude

+0

Hola Mosty, ¿Podrías subir una imagen/imagen de la estructura del proyecto usando la unidad HTML? –

0

nuevo proyecto Java con la configuración predeterminada biblioteca de descarga de la última versión de HTMUnit Download Latest HTMLUnit jar Seleccione nuevo proyecto propiedades-> Java Build Path -> ir a la pestaña de la biblioteca y añadir los archivos extraídos todos los tarros. Crea una nueva clase con el método principal dentro de tu nuevo proyecto y ejecuta una aplicación simple y agrega este método en clase y llámalo en el método principal.

`@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

Probé las respuestas anteriores y no me funcionaron.

Se necesitan pero tenía un proyecto web dinámico, así que también necesitaba agregar todos mis archivos .jar al directorio lib en el directorio WEB-INF.

p. Ej. ProjectName \ WebContent \ WEB-INF \ lib (todos los archivos .jar que está utilizando)

Cuestiones relacionadas