2016-04-27 11 views
-1

Ich habe eine Java-Anwendung erstellt, die im Grunde Daten von einer Website scrappt und eine .csv-Datei erstellt. Es läuft gut, wenn ich es in NetBeans ausführe und Datei von 34kb erstelle. Aber wenn ich es erstelle und die .JAR ausführbare Datei ausführe, erzeugt es die gleiche Datei, aber die Größe der Datei ist 4kb und bringt nicht alle Daten mit. Ich baue das Projekt auf Java 1.8. Ich verstehe dieses Thema eigentlich nicht, was der Grund dafür ist. Ist es das Problem mit der Java-Version? Vielen Dank im Voraus für Ihre Hilfe. Entschuldigung, dass Sie den Code hier nicht früher hinzugefügt haben. Hier ist der Code meines Projekts..JAR Ausführbare Datei nicht richtig ausgeführt

import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.Iterator; 
import java.util.Locale; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

//this program is for open-end-summary 
/** 
* 
* @author talha 
*/ 
public class ComMufapScraping { 

    boolean writeCSVToConsole = true; 
    boolean writeCSVToFile = true; 
    boolean sortTheList = true; 
    boolean writeToConsole; 
    boolean writeToFile; 
    public static Document doc = null; 
    public static Elements tbodyElements = null; 
    public static Elements elements = null; 
    public static Elements tdElements = null; 
    public static Elements trElement2 = null; 
    public static String Dcomma = ","; 
    public static String line = ""; 
    public static ArrayList<Elements> sampleList = new ArrayList<Elements>(); 

    public static void createConnection() throws IOException { 
     System.setProperty("http.proxyHost", "191.1.1.202"); 
     System.setProperty("http.proxyPort", "8080"); 
     String tempUrl = "http://www.mufap.com.pk/nav_returns_performance.php?tab=01"; 
     doc = Jsoup.connect(tempUrl).get(); 
    } 

    public static void parsingHTML() throws Exception { 
     for (Element table : doc.getElementsByTag("table")) { 

      for (Element trElement : table.getElementsByTag("tr")) { 
       trElement2 = trElement.getElementsByTag("tr"); 
       tdElements = trElement.getElementsByTag("td"); 
       File fold = new File("C:\\open-end-smry.csv"); 
       fold.delete(); 
       File fnew = new File("C:\\open-end-smry.csv"); 
       FileWriter sb = new FileWriter(fnew, true); 
       if (trElement.hasClass("tab-data1")) { 
        for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) { 
         if (it.hasNext()) { 
          sb.append("\r\n"); 

         } 

         for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) { 
          Element tdElement2 = it.next(); 
          final String content = tdElement2.text(); 
          if (it2.hasNext()) { 

           sb.append(formatData(content)); 
           sb.append(" , "); 

          } 
          if (!it.hasNext()) { 
           String content1 = content.replaceAll(",$", " "); 
           sb.append(formatData(content1)); 
           //it2.next(); 

          } 
         } 

         System.out.println(sb.toString()); 
         sb.flush(); 
         sb.close(); 
        } 
       } 
       System.out.println(sampleList.add(tdElements)); 

      } 
     } 
    } 
    private static final SimpleDateFormat FORMATTER_MMM_d_yyyy = new SimpleDateFormat("MMM d, yyyy", Locale.US); 
    private static final SimpleDateFormat FORMATTER_dd_MMM_yyyy = new SimpleDateFormat("dd-MMM-YYYY", Locale.US); 

    public static String formatData(String text) { 
     String tmp = null; 

     try { 
      Date d = FORMATTER_MMM_d_yyyy.parse(text); 
      tmp = FORMATTER_dd_MMM_yyyy.format(d); 
     } catch (ParseException pe) { 
      tmp = text; 
     } 

     return tmp; 
    } 

    public static void main(String[] args) throws IOException, Exception { 
     createConnection(); 
     parsingHTML(); 

    } 

} 

Hier ist die Protokolldatei nach dem Erstellen des Projekts.

ant -f C: \ Benutzer \ Talha \ Dokumente \ NetBeansProjects \ com.open_end_smry -Dnb.internal.action.name = sauberes Glas init neu: deps-clean: Aktualisieren von Eigenschaftsdatei: C: \ Benutzer \ talha \ Dokumente \ NetBeansProjects \ com.open_end_smry \ build \ built-clean.properties Verzeichnis löschen C: \ Benutzer \ talha \ Dokumente \ NetBeansProjects \ com.open_end_smry \ Build sauber: init: deps-jar: Erstellt Verzeichnis: C: \ Benutzer \ talha \ Dokumente \ NetBeansProjects \ com.open_end_smry \ build Aktualisierung der Eigenschaftendatei: C: \ Benutzer \ Talha \ Dokumente \ NetBeansProjects \ com.open_end_smry \ build \ built-jar.prop schaften dir Erstellt: C: \ Benutzer \ Talha \ Dokumente \ NetBeansProjects \ com.open_end_smry \ \ Klassen Erstellt dir bauen: C: \ Benutzer \ Talha \ Dokumente \ NetBeansProjects \ com.open_end_smry \ bauen \ leer Erstellt dir : C: \ Benutzer \ talha \ Dokumente \ NetBeansProjects \ com.open_end_smry \ build \ generierte-sources \ ap-source-output Kompilieren von 1 Quelldatei zu C: \ Benutzer \ Talha \ Documents \ NetBeansProjects \ com.open_end_smry \ build \ classes Warnung: [Optionen] Bootstrap-Klassenpfad nicht in Verbindung mit -source festgelegt 1.7 1 Warnung Kompilieren: Erstellt Verzeichnis: C: \ Benutzer \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist Kopieren 1 Datei zu C: \ Benutzer \ talha \ Dokumente \ Ne tBeansProjects \ com.open_end_smry \ build Kopieren Sie Bibliotheken zu C: \ Benutzer \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ lib. Erstellen von jar: C: \ Benutzer \ Talha \ Dokumente \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar Um diese Anwendung über die Befehlszeile ohne Ant auszuführen, versuchen Sie: java -jar "C: \ Benutzer \ Talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar“ jar: ERFOLGREICH (Gesamtzeit: 0 Sekunden) BUILD

+0

Sie müssen Ihr Projekt lokal auf Ihren Rechner kopieren. Dann starte auf deiner Konsole 'javac file.java' und dann' java File'. Wenn Sie Java richtig installiert haben, sollte dies funktionieren. –

+1

Vorausgesetzt, alles wird kopiert und korrekt kompiliert, gibt es keine Möglichkeit für uns zu wissen, was mit dem, was Sie erwähnt haben, falsch läuft. –

+0

Wenn Sie ein [mcve] bereitstellen könnten, könnten wir versuchen, das Problem zu reproduzieren. Ohne Code ist es schwer dir zu helfen –

Antwort

1

Sie die Löschfunktion der Datei in Ihrer Schleife haben, so Die Datei wird in jeder Schleife gelöscht. Setzen Sie diese Teile außerhalb Ihres Loops:

public static void parsingHTML() throws Exception { 
     File fold = new File("C:\\open-end-smry.csv"); 
     fold.delete(); 
     for (Element table : doc.getElementsByTag("table")) { 

      for (Element trElement : table.getElementsByTag("tr")) { 
       trElement2 = trElement.getElementsByTag("tr"); 
       tdElements = trElement.getElementsByTag("td"); 
       File fnew = new File("C:\\open-end-smry.csv"); 
       FileWriter sb = new FileWriter(fnew, true); 
       if (trElement.hasClass("tab-data1")) { 
        for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) { 
         if (it.hasNext()) { 
          sb.append("\r\n"); 

         } 

         for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) { 
          Element tdElement2 = it.next(); 
          final String content = tdElement2.text(); 
          if (it2.hasNext()) { 

           sb.append(formatData(content)); 
           sb.append(" , "); 

          } 
          if (!it.hasNext()) { 
           String content1 = content.replaceAll(",$", " "); 
           sb.append(formatData(content1)); 
           //it2.next(); 

          } 
         } 

         System.out.println(sb.toString()); 
         sb.flush(); 
         sb.close(); 
        } 
       } 
       System.out.println(sampleList.add(tdElements)); 

      } 
     } 
    } 
Verwandte Themen