# Jar mit Eclipse erstellen -->startet nicht



## benner (23. Jul 2007)

Also ich möchte ein Projekt unter Eclipse als Jar-File exportieren. Das habe ich schon mehrmals gemacht und es hat immer funktioniert. Jetzt folgendes: rechte Mousetaste auf das Projekt und die übliche Prozedur, die zu verwendenden Dateien (alle) wählen, Main-Klasse angeben etc. Wird alles erledigt, aber wenn ich dann das Jar-File ausführen will, passiert...nichts! Keine Fehlermeldung, kein Absturz, kein Prozess, der unsichtbar im Hintergrund läuft...obwohl sich eine schöne GUI öffnen sollte, was unter Eclipse natürlich funtioniert.

Ich habe irgendwo einen Beitrag gefunden, wo ein ähnliches Problem auftauchte, allerdings wurde der Threadersteller dort auf irgendeinen Wrapper hingewiesen, der ihm aus dem schönen JarFile eine *.exe gebastelt hat. Das möchte ich definitiv nicht, es soll schon ein Jar-File bleiben.
Ich nutze die CommAPI 2.0 in diesem Projekt, könnte es auch daran liegen? Ich bin langsam am Verzweifeln, da es sonst immer funktioniert hat und ich nicht einemal eine Fehlermeldung als Ansatz habe...


----------



## Wildcard (23. Jul 2007)

Starte das jar von einer shell aus und poste die Exception.


----------



## padde479 (24. Jul 2007)

> Wird alles erledigt, aber wenn ich dann das Jar-File ausführen will, passiert...nichts! Keine Fehlermeldung, kein Absturz, kein Prozess, der unsichtbar im Hintergrund läuft...





> Starte das jar von einer shell aus und poste die Exception.



???:L


----------



## Wildcard (24. Jul 2007)

@padde
es kommt hundertprozentig eine Exception, er/sie sieht sie nur nicht weil die jar als javaw gestartet wird.


----------



## benner (25. Jul 2007)

Hier die Exception:

```
Exception in thread "main" java.lang.NoClassDefFoundError: javax/comm/UnsupportedCommOperationException at Main.main(Main.java:10)
```

Ich benutze in diesem Programm die JavaComm2.0 API, falls das weiterhilft.


----------



## der JoJo (25. Jul 2007)

was steht den in deiner zeile 10 in der main funktion
poste einfach mal den Quelltex der ersten paar zeilen

#edit oder steht da zufällig ein import? - wenn ja, dann musst du diesen Import IMO irgendwie mit in die .jar komeplieren?


----------



## benner (25. Jul 2007)

In Zeile 10 der Main-Funktion wird die Methode start() dieser Klasse aufgerufen, mehr ist es nicht:

```
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;

public class content extends Frame
{
	static CommPortIdentifier portID;
	InputStream ins;
	OutputStream out;
	static SerialPort serss;
	TextArea ausgabe;
	TextField tfe;
	Button bt;

	public static void start()
	{
		try
		{
			portID = CommPortIdentifier.getPortIdentifier("COM1");
                 	serss = (SerialPort) portID.open("mein_programm",2000);
        	        content f = new content();
        	        f.setSize(330,250);
        	        f.show();
		}
		catch(Exception exc){System.out.println("Fehler :"+exc);}
	}

	public content() 
	{
		this.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				dispose();
				System.exit(0);
			}
		});
		setLayout(new FlowLayout());
		add(tfe=new TextField(40));
		tfe.addActionListener(new sendeListener());
		add(bt=new Button("Senden"));
		bt.addActionListener(new sendeListener());
		add(ausgabe=new TextArea("Port COM1 geöffnet",7,40));
		try 
		{
			ins = serss.getInputStream();
			out = serss.getOutputStream();
			serss.addEventListener(new commListener());
		}
		catch (Exception e) { /*System.out.println("Fehler: "+e);*/}
    
		serss.notifyOnDataAvailable(true);
		try
		{
			serss.setSerialPortParams(	9600,
                                   		SerialPort.DATABITS_8,
                                   		SerialPort.STOPBITS_1 ,
                                   		SerialPort.PARITY_NONE);
			serss.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
		}
		catch (UnsupportedCommOperationException e) {}
	}

	public class sendeListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
//			System.out.println("Ein Signal wurde gesendet");
			ausgabe.setText(ausgabe.getText()+"\nEin Signal wurde gesendet");
			PrintWriter aus = new PrintWriter(out);
			
			aus.print(tfe.getText()+"\r");
			
			
			for(int i=0;i<tfe.getText().length();i++)
			{
				System.out.println("_ "+tfe.getText().charAt(i)+" _");
			}
			
			aus.flush();
			aus.close();
		}
	}

     public class commListener implements SerialPortEventListener
  	{
  		public void serialEvent(SerialPortEvent event) 
  		{
//  			System.out.println("Ein Signal vom COM-Port kam an...");
  			ausgabe.setText(ausgabe.getText()+"\nEin Signal vom Com-Port kam an");
  			System.out.println(event.getOldValue());
  			System.out.println(event.getNewValue());
  			System.out.println(event.getEventType());
  			if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE)
  			{
//  				System.out.println("...dieses war ein gültiges Event");
  				ausgabe.setText(ausgabe.getText()+"\nEs war ein gültiges Event");
  				byte[] readBuffer = new byte[20];
  				  				
  				try 
  				{
  					while (ins.available() > 0) 
  					{
  						int numBytes = ins.read(readBuffer);
  					}
  					String nachricht = new String(readBuffer);
  					ausgabe.append(nachricht);
  				}
  				catch (IOException e) {/*System.out.println("Fehler: "+e);*/}
  			}
  		}
  	}
}
```


----------



## der JoJo (25. Jul 2007)

hm, kein plan, sry


----------



## mikachu (25. Jul 2007)

das ist nicht der inhalt der Main.java, wo der fehler herkommt  :gaen: 

javax/comm/UnsupportedCommOperationException at Main.main(*Main.java*:10);

und Klassen beginnen mit Großbuchstaben !!!


----------



## benner (25. Jul 2007)

mika.fhdw hat gesagt.:
			
		

> das ist nicht der inhalt der Main.java, wo der fehler herkommt  :gaen:


:meld:


			
				benner hat gesagt.:
			
		

> In Zeile 10 der Main-Funktion wird die Methode start() dieser Klasse aufgerufen, mehr ist es nicht:




Wenn du dir nicht vorstellen kannst, wie das aussehen sollte, dann bitteschön: :### 

```
public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		content.start();
	}

}
```

Das mit Klassennamen stimmt natürlich, sollte ich wohl mal ändern.


----------



## merlin2 (25. Jul 2007)

Und wo ist content in Main?


----------



## benner (26. Jul 2007)

merlin2 hat gesagt.:
			
		

> Und wo ist content in Main?



Ähm eigentlich in Zeile 10? Oder verstehe ich deine Frage jetzt irgendwie falsch? Ich bin verwirrt...


----------



## merlin2 (26. Jul 2007)

Ah, jetzt hab ich's verstanden.  
Das kommt davon, wenn man Klassennamen kleinschreibt: Ich hielt content für ein Objekt.


----------

