# Eclipse braucht ewig zum Starten meines Codes



## Verjigorm (14. Jan 2008)

Hallo, ich hab den folgenden Code und Eclipse braucht irgendwie knappe 30sek um den zu starten.
Wenn ich den Code per Konsole kompiliere und starte, dann geht das in 2-3sek.
Wenn ich das ganze als Jar packe und starte dauert es auch nur 2-3sek.

Hat jemand ne Idee? Ist mir irgendwie schleierhaft.
Es gibt sonst keine eingebundenen Libs oder sonstwas, auch nix, was ich noch nicht benutzt hätte an Code.
Alles andere rennt in Eclipse einwandfrei ohne große Verzögerung.
Vielleicht sieht ja jemand von euch das Problem.


```
package main;

import java.io.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;

public class Converter_all extends JFrame implements ActionListener {

	private static final long serialVersionUID = 4757800617145093061L;
	private String newline = "\n";
	private StringBuffer text = new StringBuffer("");
	private JRadioButton jrb = new JRadioButton("Converter1");
	private JRadioButton jrb2 = new JRadioButton("Converter2");
	private JRadioButton jrb3 = new JRadioButton("Converter3");
	//private JRadioButton jrb4 = new JRadioButton("Converter4");
	private JRadioButton nur_0011 = new JRadioButton("nur_0011");
	private JRadioButton ohne_0011 = new JRadioButton("ohne_0011");
	private JRadioButton beides = new JRadioButton("beides");
	private JPanel rbuttonPanel = new JPanel();
    private JButton openButton = new JButton("Datei oeffnen"); 
    private JButton saveButton = new JButton("Konvertierung speichern");
    private JTextArea log = new JTextArea(5,20);
    private JFileChooser fc = new JFileChooser();
    private JScrollPane logScrollPane = new JScrollPane(log);
    private JFrame me = this;
    private ButtonGroup bg = new ButtonGroup();
    private ButtonGroup bg_choice = new ButtonGroup();
    private JPanel buttonPanel = new JPanel();
    private JCheckBox jcb = new JCheckBox("Führende Zeile in InputFile ignorieren (Überschrift)");
	
    public Converter_all() {
        super("Converter_fuer_alles");
        setLayout(new BorderLayout());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(250, 250);
        setSize(400, 300); 
        //setResizable(false);
        
        log.setMargin(new Insets(5,5,5,5));
        log.setEditable(false);
       
        openButton.addActionListener(this);
        openButton.setEnabled(false);
        
        saveButton.addActionListener(this);
        saveButton.setEnabled(false);
        
        ohne_0011.addActionListener(this);
    	ohne_0011.setEnabled(false);
    	ohne_0011.setBounds(50,75,100,25);
    	nur_0011.addActionListener(this);
    	nur_0011.setEnabled(false);
    	nur_0011.setBounds(150,75,100,25);
    	beides.addActionListener(this);
    	beides.setEnabled(false);
    	beides.setBounds(250,75,100,25);
    	
    	jcb.setBounds(0,100,getSize().width,25);
        
        bg_choice.add(ohne_0011);
        bg_choice.add(nur_0011);
        bg_choice.add(beides);
        
        buttonPanel.add(openButton);
        buttonPanel.add(saveButton);
        
        jrb.addActionListener(this);
        jrb.setBounds(0,0,100,25);
        jrb2.addActionListener(this);
        jrb2.setBounds(0,25,100,25);
        jrb3.addActionListener(this);
        jrb3.setBounds(0,50,100,25);
        //jrb4.addActionListener(this);
        //jrb4.setBounds(0,75,100,25);
           
        rbuttonPanel.setLayout(null);
        rbuttonPanel.setPreferredSize(new Dimension(getSize().width, 125));
        rbuttonPanel.add(jrb);
        rbuttonPanel.add(jrb2);
        rbuttonPanel.add(jrb3);
        //rbuttonPanel.add(jrb4);
        rbuttonPanel.add(ohne_0011);
        rbuttonPanel.add(nur_0011);
        rbuttonPanel.add(beides);
        rbuttonPanel.add(jcb);
        
        bg.add(jrb);
        bg.add(jrb2);
        bg.add(jrb3);
        //bg.add(jrb4);

        add(rbuttonPanel, BorderLayout.NORTH);
        add(buttonPanel, BorderLayout.CENTER);
        add(logScrollPane, BorderLayout.SOUTH); 
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == openButton) {
        	fc.setCurrentDirectory(new File(System.getProperty("user.dir")));
            int returnVal = fc.showOpenDialog(Converter_all.this);

            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fc.getSelectedFile();
                log.append(file.getName() + " erfolgreich geöffnet." + newline);
                //System.out.println(file.getAbsolutePath());
                convert(file);
            } else {
                log.append("Oeffnen abgebrochen." + newline);
            }
            log.setCaretPosition(log.getDocument().getLength());

        } else if (e.getSource() == saveButton) {
            int returnVal = fc.showSaveDialog(Converter_all.this);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fc.getSelectedFile();
                log.append("Speichere: " + file.getName() + "." + newline);
                speichere(file);
            } else {
                log.append("Speichern abgebrochen." + newline);
            }
            log.setCaretPosition(log.getDocument().getLength());
            
            JOptionPane.showMessageDialog(me, "Konvertierung erfolgreich");
    		
            me.dispose();
        }
        else if(e.getSource() == jrb || e.getSource() == jrb2 ||
        		e.getSource() == jrb3)  	
        {
        	if(e.getSource() == jrb3)
        	{
        		if(!ohne_0011.isSelected() && !nur_0011.isSelected() && !beides.isSelected())
        			openButton.setEnabled(false);
      		
        		ohne_0011.setEnabled(true);
        		nur_0011.setEnabled(true);
        		beides.setEnabled(true);
        	}
        	else
        	{
        		bg_choice.clearSelection();
            	ohne_0011.setEnabled(false);
            	nur_0011.setEnabled(false);
            	beides.setEnabled(false);
            	openButton.setEnabled(true);
        	}
        }
        else if(e.getSource() == ohne_0011 || e.getSource() == nur_0011 || e.getSource() == beides)
        {
        	openButton.setEnabled(true);
        }
    }
    
    private void convert(File f)
    {
    	boolean erfolgreich = true;
    	openButton.setEnabled(false);
    	jrb.setEnabled(false);
    	jrb2.setEnabled(false);
    	jrb3.setEnabled(false);
    	//jrb4.setEnabled(false);
    	ohne_0011.setEnabled(false);
    	nur_0011.setEnabled(false);
    	beides.setEnabled(false);
    	
    	try {
    		BufferedReader in = new BufferedReader(new FileReader(f.getAbsoluteFile()));
    		String zeile = null;
    		String[] splited = null;
    		String neue_zeile = "";
    		int zaehler = 0;
  		
    		while ((zeile = in.readLine()) != null) 
    		{
    			splited = zeile.split("\t");
/************************************************************************/    	
    	   		if(jrb.isSelected())
        		{       		
        			if(splited.length < 6)
        			{
        				log.append("Fehler, ungültiges Format"+newline);
        				erfolgreich = false;
        				break;
        			}
        			
        			if(jcb.isSelected() && zaehler == 0)
        			{
        				log.append("Ignoriere erste Zeile");
        				zaehler++;
        				continue;
        			}
        			
        			text = text.append("XY=" +splited[4] + "," + splited[5] + "," + 
        					splited[6] + "\r" + newline);
        			zaehler++;
        			
        			System.out.println("Konvertierungsregel1");
        		}
/************************************************************************/   	   		
        		else if(jrb2.isSelected())
        		{
        			splited = zeile.split("\t");
        			
        			if(splited.length < 3)
        			{
        				log.append("Fehler, ungültiges Format"+newline);
        				erfolgreich = false;
        				break;
        			}
        			
        			if(jcb.isSelected() && zaehler == 0)
        			{
        				log.append("Ignoriere erste Zeile");
        				zaehler++;
        				continue;
        			}
        			
        			neue_zeile = "macro M:\\WORKING\\Toolbox\\StrKmRz2Coor\\EBA_WhereIs_FromTo_v2 "
    					+ splited[0] + " 1 " + splited[2].replace("+", "") + " " + 
    					splited[3].replace("+", "") + " " + splited[1];
        			text = text.append(neue_zeile + "\r" + newline);
        			
        			System.out.println("Konvertierungsregel2");
        		}
/************************************************************************/    	   		
        		else if(jrb3.isSelected())
        		{
        			System.out.println("Konvertierungsregel3");
        			
        			if(ohne_0011.isSelected())
        			{
            			if(splited.length < 3)
            			{
            				log.append("Fehler, ungültiges Format"+newline);
            				erfolgreich = false;
            				break;
            			}
            			
            			if(jcb.isSelected() && zaehler == 0)
            			{
            				log.append("Ignoriere erste Zeile");
            				zaehler++;
            				continue;
            			}
            			
            			neue_zeile = "macro eba_parallel_v2 "
	    					+ splited[0] + " 1 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
	    					+ " " + "1.80 0 11 7";
	
	        			text = text.append(neue_zeile + "\r" + newline);
	        			
	        			neue_zeile = "macro eba_parallel_v2 "
	    					+ splited[0] + " 1 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
	    					+ " " + "-1.80 0 11 7";
	        			
	        			text = text.append(neue_zeile + "\r" + newline);
	        			
	        			neue_zeile = "macro eba_parallel_v2 "
	    					+ splited[0] + " 2 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
	    					+ " " + "1.80 0 11 71";
	        			
	        			text = text.append(neue_zeile + "\r" + newline);
	        			
	        			neue_zeile = "macro eba_parallel_v2 "
	    					+ splited[0] + " 2 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
	    					+ " " + "-1.80 0 11 71";
	        			
	        			text = text.append(neue_zeile + "\r" + newline);
            			
        				System.out.println("ohne 0011");
        			}
/************************************************************************/
        			else if(nur_0011.isSelected())
        			{
            			if(splited.length < 3)
            			{
            				log.append("Fehler, ungültiges Format"+newline);
            				erfolgreich = false;
            				break;
            			}
            			
            			if(jcb.isSelected() && zaehler == 0)
            			{
            				log.append("Ignoriere erste Zeile");
            				zaehler++;
            				continue;
            			}
            			
            			neue_zeile = "macro eba_parallel_v2 "
        					+ splited[0] + " 1 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
        					+ " " + "0 0 1 1";
            			
    	        			text = text.append(neue_zeile + "\r" + newline);
    	        			
    	        			
    	        			neue_zeile = "macro eba_parallel_v2 "
    	    					+ splited[0] + " 2 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
    	    					+ " " + "0 0 1 1";
    	      
    	        			text = text.append(neue_zeile + "\r" + newline);
            			
        				System.out.println("nur 0011");
        			}
/************************************************************************/
        			else if(beides.isSelected())
        			{
            			if(splited.length < 3)
            			{
            				log.append("Fehler, ungültiges Format"+newline);
            				erfolgreich = false;
            				break;
            			}
            			
            			if(jcb.isSelected() && zaehler == 0)
            			{
            				log.append("Ignoriere erste Zeile");
            				zaehler++;
            				continue;
            			}
            			
            			neue_zeile = "macro eba_parallel_v2 "
    					+ splited[0] + " 1 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
    					+ " " + "0 0 1 1";
        			
	        			text = text.append(neue_zeile + "\r" + newline);
	        			
	        			
	        			neue_zeile = "macro eba_parallel_v2 "
	    					+ splited[0] + " 2 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
	    					+ " " + "0 0 1 1";
	      
	        			text = text.append(neue_zeile + "\r" + newline);
	        			
	        			neue_zeile = "macro eba_parallel_v2 "
	    					+ splited[0] + " 1 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
	    					+ " " + "1.80 0 11 7";
	
	        			text = text.append(neue_zeile + "\r" + newline);
	        			
	        			neue_zeile = "macro eba_parallel_v2 "
	    					+ splited[0] + " 1 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
	    					+ " " + "-1.80 0 11 7";
	        			
	        			text = text.append(neue_zeile + "\r" + newline);
	        			
	        			neue_zeile = "macro eba_parallel_v2 "
	    					+ splited[0] + " 2 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
	    					+ " " + "1.80 0 11 71";
	        			
	        			text = text.append(neue_zeile + "\r" + newline);
	        			
	        			neue_zeile = "macro eba_parallel_v2 "
	    					+ splited[0] + " 2 " + splited[2].replace("+", "") + " " + splited[3].replace("+", "") 
	    					+ " " + "-1.80 0 11 71";
	        			
	        			text = text.append(neue_zeile + "\r" + newline);
            			
        				System.out.println("beide");
        			}
        		}//jrb3
    		}//while
    		
    		in.close();
    	}//try 
    	catch (IOException e) {
    		e.printStackTrace();
    	}
    	//System.out.println(text);
    	if(erfolgreich)
    	{
    		log.append("Konvertierung erfolgreich." + newline);
    		log.setCaretPosition(log.getDocument().getLength());
    		saveButton.setEnabled(true);
    	}
    	else
    		openButton.setEnabled(true);
    }
    
    private void speichere(File f)
    {
        try 
        {
            BufferedWriter b = new BufferedWriter (new FileWriter (f.getAbsoluteFile()));
            b.write(text.toString());
            b.close();
        }
        catch (IOException e) 
        {
            System.out.println("Fehler: "+e.toString());
            log.append("Fehler: "+e.toString());
        }
        log.append(f.getName() + " erfolgreich gespeichert." + newline);
    }

    public static void main(String[] args) 
    { 
    	new Converter_all();
    }
}
```


----------



## ARadauer (14. Jan 2008)

kann es sein, dass du irgendwelche rießigen datein in deinme src verzeichnis hast, dass eclipse beim compiliren ins bin verzeichnis kopiert?


----------



## Verjigorm (14. Jan 2008)

hm mein eclipse-ordner is 365MB groß, das würd ich nicht als riesig erachten 

In dem Projektordner an sich ist sonst garnix mehr

ich exportier das schon als Jar irgendwo hin, weil dann gehts testen schneller  .... ziemlicher Mist


----------



## MiDniGG (15. Jan 2008)

Hm, da es ja ohne Eclipse schnell läuft. Kann es sein, dass du Eclipse irgendwie zu wenig RAM zur Verfügung stellst oder so?
Ist jetzt nur ne Vermutung. Ich hab auch keinen Plan woran das liegen könnte...  (Mein Eclipse-Ordner hat 136MB aba ich hab au alle Projekte wo anderst gespeichert...)


----------



## manuche (15. Jan 2008)

Also das eclipse nen Hardware fressendes Monster ist wissen wir alle... Also bei mir hängt es mit 2x512 MB-DDR DC ganz schön krass! Aber eigentlich sollte sich das nich sonderlich aufs kompilieren auswirken... Da muss eclipse ja nich wirklich viel machen und tun ausser zu kompilieren halt...
Oder dein PC ist von der ganz alten Sorte und ist eh mit den 100mb arbeitsspeicherausnutzung von eclipse total überfordert...


----------



## nocturne (15. Jan 2008)

Hi!



1. Linux? 
Dann: Solltest mal auf den WM "Motif" wechseln, der ist schneller.


2. Hast du die EE version? 
3. Zu viele Plugins?
4. Wie groß ist der "src"-Ordner?
5. Hast du andere Build-Engines wie Spring oder AspektJ?

6. Windows? Gehe sicher das das Projekt-Verzeichnis in einer Partition mit FAT oder FAT32 liegt. NTFS / HPFS oder ähnliche sind sehr langsam.

Wie du siehst gibts mehrere punkte die blocken können.


----------



## Verjigorm (15. Jan 2008)

Also ich hab den Quellcode mal durchforstet und alles nacheinander auskommentiert.
Am Ende blieb der JFileChooser als böses Übel über, wenn ich den weglasse läufts perfekt.
Wobei mich das wundert, ich hab die letzten Wochen massig mit dem Ding gearbeitet aber plötzlich hängt er übelst.

Hab grade letzte Woche in nem anderen thread noch gesagt, dass der einwandfrei läuft und nun bestraft er mich 

Ich hab den schon an verschiedensten Stellen versucht zu initialisieren, aber immer dasselbe, die Systemauslastung geht ca. 30sek auf 100% bis das Programm startet.
Das nervt mich doch grad sehr, als jar oder per Konsole rennt das Ding einwandfrei, irgendwas muss da mitm eclipse sein, ich glaub ich installiers mal neu ....

mfg Verjigorm


----------



## ms (15. Jan 2008)

Was jetzt?
Kompilieren oder Starten dauert lange?

ms


----------



## Verjigorm (15. Jan 2008)

ja war falsch ausgedrückt von mir

zum Starten des Codes brauch es ewig


----------



## SlaterB (15. Jan 2008)

bei mir startet das relativ schnell, unter 1 sec,
probiere es unter einem neuen Porjekt/ Workspace/ Eclipse-Installation/ Rechner

probiere den Code notfalls Zeile um Zeile zu verkleinern,
bis du entweder einen Punkt erreichst, an dem es auf einmal schneller geht,
oder selbst Hello World-Programme brauchen lange, dann musst du wenigestens nicht so ein langes Programm posten 
oder die Zeit sinkt linear langsam ab, dann bringt dieses Vorgehen leider nichts


----------



## maki (15. Jan 2008)

Wieviel Speicher hat Eclipse denn zur Verfügung?


----------



## Verjigorm (15. Jan 2008)

-launcher.XXMaxPermSize 256m
-vmargs
-Xms40m
-Xmx1024m


das Problem existiert erst seit 1Woche und auch nur in Verbindung mit dem JFileChooser


----------



## maki (15. Jan 2008)

Du hast doch nur ein Gig Ram, da müsste Windows doch sehr viel swappen wenn Eclipse den benutzt.


----------



## tuxedo (15. Jan 2008)

Mach mal:

Start -> Einstellungen -> Systemsteuerung -> Verwaltung -> Leistung

Damit kannst du checken ob die Festplatte an der Bremse schuld ist, bzw. ob da viel ausgelagert werden muss wenn du's mit Eclipse startest.

- Alex


----------



## Verjigorm (15. Jan 2008)

maki hat gesagt.:
			
		

> Du hast doch nur ein Gig Ram, da müsste Windows doch sehr viel swappen wenn Eclipse den benutzt.



hab 2GB, hab nie was anderes behauptet


----------



## maki (15. Jan 2008)

> hab 2GB, hab nie was anderes behauptet


?


> Also bei mir hängt es mit 2x512 MB-DDR DC ganz schön krass!



Naja, jedenfalls sind deine Einstellungen (fast) ok für 2 Gig ram, würde allerdings den XMS auf 512 MB anheben, mit 40 MB kommst du nicht weit, und mehr Speicher zu allokieren dauert auch, ist aber nicht die Ursache für dein Problem.


----------



## Verjigorm (15. Jan 2008)

2x512 hat manuche geschreiben, nicht ich ....

hab mal den Systemmonitor angeschaut, da steigt "nur" die Prozessorzeit beim Starten, mehr nicht


----------



## tuxedo (15. Jan 2008)

Hmm, das ist echt seltsam. 

Check doch mal deine JDK-Einstellung in Eclipse.
Kannst auch mal versuchen ein zweites, cleanes Eclipse auf die Kiste zu machen und den Workspace damit zu laden. Wenn das nix hilft:

Neuen Workspace anlegen und das Projekt da rein importieren. Vielleicht liegts an dem Meta-Daten des Workspaces ... 

Mehr fällt mir jetzt auch nicht mehr ein.

- Alex


----------



## Verjigorm (15. Jan 2008)

alex0801 hat gesagt.:
			
		

> Neuen Workspace anlegen und das Projekt da rein importieren. Vielleicht liegts an dem Meta-Daten des Workspaces ...
> 
> Mehr fällt mir jetzt auch nicht mehr ein.
> 
> - Alex



ooooookkkkkkkk damit gehts einwandfrei!!!!!!!!!!! 1-2sek zum starten
ich hab im alten workspace schon ein neues Projekt angelegt, aber das hat nicht geholfen.

Im neuen Workspace gehts nun wunderbar
Und wer erklärt mir nun, wo das Problem ist?? 

mfg Verjigorm


----------



## maki (15. Jan 2008)

Hast du den alten Workspace aus einer alten Eclipse Version übernommen?

Manchmal hilft es auch Eclipse mit dem Parameter clean zu starten.


----------



## tuxedo (15. Jan 2008)

Ich vermute dass es an den Workspace-Metadaten lag. Je mehr Plugins dein Eclipse hat, desto größer wird der Krempel. Und desto langsamer wirds (auch wenn ich das bis jetzt noch nicht selbst erlebt hab). 

Aber ich tippe mal auch auf maki's überlegung...

- Alex


----------



## Verjigorm (15. Jan 2008)

maki hat gesagt.:
			
		

> Hast du den alten Workspace aus einer alten Eclipse Version übernommen?
> 
> Manchmal hilft es auch Eclipse mit dem Parameter clean zu starten.



nö,
ausserdem starte ich eclipse immer mit -clean

hab letzte Woche diverses Zeugs installiert, darunter auch nen paar Plugins
aber immer mit -clean gestartet ...

jetzt schau ich erstmal was passiert, wenn ich den rest jetzt auch importiere,
mehrere Workspaces find ich nicht so prickelnd


----------

