# JVM Launcher Error



## javix (23. Mrz 2012)

Hello!

Ich habe ein Problem. Jedes mal wenn ich ein .jar file ausführe, kommt die gleiche Fehlermeldung:

*Java Virtual Machine Launcher
Could not find the main class: [package].[projectname]. Program will exit.
*
oder

*Could not find the main class: [package]. Program will exit.
*
(ohne [ ])
Der Fehler taucht nicht nur bei selbst erstellten Programmen auf.

Ich verwende Win7 x64, die neueste JRE,  7.02 JDK und Netbeans.
Ich habe schon alle Programme deinstalliert, die etwas mit Java zu tun hatten, meinen PC rebootet und alles neu installiert (JRE+JDK). Doch der Fehler blieb erhalten

Bitte um Hilfe!

mfg
Armin


----------



## headnut (23. Mrz 2012)

hast du die CLASSPATH Variablen gesetzt?


----------



## javix (23. Mrz 2012)

headnut hat gesagt.:


> hast du die CLASSPATH Variablen gesetzt?



Der bin Ordner der JDK ist in der PATH Variable


----------



## headnut (23. Mrz 2012)

kontrollier mal die java und die javac version in der konsole


```
java -version
```


```
javac -version
```

und netbeans kenn  ich nicht aber es müssten über die gleich versionen sein


----------



## javix (23. Mrz 2012)

java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)

javac 1.7.0_02


----------



## headnut (23. Mrz 2012)

zeig mal deine main klasse


----------



## javix (23. Mrz 2012)

headnut hat gesagt.:


> zeig mal deine main klasse



Das Problem tritt auch bei heruntergeladenen .jar Dateien vom Internet auf. Es kann also meiner Meinung nach nicht an meiner main class liegen.


Wenn ich das Programm mit Netbeans ausführe, funktioniert es. Es geht nur nicht wenn ich die .jar Datei ausführe.

Hier noch eine Klasse bei der das Problem z. B. auftritt:


```
package bruch;
public class Bruch
{
	private long zähler;
	private long nenner;

	public static void main(String[] arg)
	{
		Bruch b1,b2,b3;
		b1=new Bruch(1,5);
		b2=new Bruch(3,10);
		System.out.print(b1.equals(b2));
		System.out.print(b1.toString());
		b3=b1.subBruch(b2);
		b1.showBruch();
		System.out.print(" + ");
		b2.showBruch();
		System.out.print(" = ");
		b3.showBruch();
		System.out.print("\n");
	}

	public Bruch()
	{
		this.zähler=0;
		nenner=1; //^= this.nenner=1;
	}

	public Bruch(long z)
	{
		this.zähler=z;
		this.nenner=1;
	}

	public Bruch(long z,long n)
	{
		this.zähler=z;
		this.nenner=n;
	}

	public Bruch addBruch(Bruch b)
	{
		Bruch h=new Bruch();
		h.nenner=this.nenner*b.nenner;
		h.zähler=this.zähler*b.nenner+b.zähler*this.nenner;
		h.kürzeBruch();
		return h;
	}

	public Bruch subBruch(Bruch b)
	{
		Bruch h=new Bruch();
		h.nenner=this.nenner*b.nenner;
		h.zähler=this.zähler*b.nenner-b.zähler*this.nenner;
		h.kürzeBruch();
		return this;
	}

	public Bruch mulBruch(Bruch b)
	{
		Bruch h=new Bruch();
		h.nenner=this.nenner*b.nenner;
		h.zähler=this.zähler*b.zähler;
		h.kürzeBruch();
		return this;
	}

	public Bruch divBruch(Bruch b)
	{
		Bruch h=new Bruch();
		h.nenner=this.nenner*b.zähler;
		h.zähler=this.zähler*b.nenner;
		h.kürzeBruch();
		return this;
	}

	public void kürzeBruch()
	{
	/*
		long og=this.z�hler;
		if(this.nenner<this.z�hler)
		{
			og=this.nenner;
		}
		//og=kleinerer Wert (Z�hler oder Nenner) - von og bis 2 wir nach ggt gesucht!
		*/
		for(long i=this.zähler;i>=2;i--)
		{
			if(this.nenner%i==0 && this.zähler%i==0)
			{
				zähler=zähler/i;
				nenner=nenner/i;
			}
		}
	}

	public void showBruch()
	{
		System.out.print(this.zähler+"/"+this.nenner);
	}

	public boolean equals(Object obj)
	{
		boolean equ=false;
		if(obj!=null)
		{
			if(obj instanceof Bruch)
			{
				Bruch h=(Bruch)obj;
				h.kürzeBruch();
				this.kürzeBruch();
				equ=(h.zähler==this.zähler)&&(h.nenner==this.nenner);
			}
		}
		return equ;
	}

	public String toString()
	{
		return new String(this.zähler+"/"+this.nenner);
	}
}
```


----------



## headnut (23. Mrz 2012)

Erstatz dass hier bei dir:


```
public static void main(String[] arg)
```


mit:


```
public static void main(String[] args) {
```
und probier nochmal!


----------



## javix (23. Mrz 2012)

Ich habe es probiert... und es ist kein Unterschied zu vorher.


----------



## maki (23. Mrz 2012)

Prüfe das Manifest.


----------



## Gast2 (23. Mrz 2012)

headnut hat gesagt.:


> Erstatz dass hier bei dir:
> 
> 
> ```
> ...



Was soll das denn bringen? 

obs n der main nun arg oder args heisst ist doch dem Aufrufer SCh*** egal! Kannst die Variable auch Violetta nennen wenn du magst. 

Das das auch bei heruntergeladenen Java Applikationen auftritt ist seltsam. Funktioniert Eclipse (hat eine private JRE)? Wenn ja würde ich sagen liegts an deiner Java Installation (Probier mal die aktuelle 1.6.x) Vielleicht ist ja wirklich noch ein Bug in der 7er.


----------



## headnut (23. Mrz 2012)

mach in path variable den bin ordner der JRE

Bsp:

```
C:\Programme\Java\jre6\bin;
```


----------



## javix (23. Mrz 2012)

maki hat gesagt.:


> Prüfe das Manifest.



manifest?? was ist das? und wo prüft man das?


----------



## headnut (23. Mrz 2012)

kappesf hat gesagt.:


> Was soll das denn bringen?
> 
> obs n der main nun arg oder args heisst ist doch dem Aufrufer SCh*** egal! Kannst die Variable auch Violetta nennen wenn du magst.



Immer locker bleiben...


----------



## javix (23. Mrz 2012)

headnut hat gesagt.:


> mach in path variable den bin ordner der JRE
> 
> Bsp:
> 
> ...



hab vergessen wie das geht. Bitte schreib wie das geht.


----------



## javix (23. Mrz 2012)

kappesf hat gesagt.:


> Funktioniert Eclipse (hat eine private JRE)? Wenn ja würde ich sagen liegts an deiner Java Installation (Probier mal die aktuelle 1.6.x) Vielleicht ist ja wirklich noch ein Bug in der 7er.



Ich kann mit eclipse projekte machen und ausführen. Oder was meinst du?
Wo krieg ich die 1.6er?


----------



## headnut (23. Mrz 2012)

Let me google that for you


----------



## maki (23. Mrz 2012)

javix hat gesagt.:


> manifest?? was ist das? und wo prüft man das?


FAQ, Suchfunktion, usw. sagen dir was?
Haben dieses "Problem" hier fast täglich...

Ansonsten sind headnuts vorschläge Quark..


----------



## Gast2 (23. Mrz 2012)

javix hat gesagt.:


> Ich kann mit eclipse projekte machen und ausführen. Oder was meinst du?
> Wo krieg ich die 1.6er?



Wenn Eclipse läuft läuft auch das mit Eclipse ausgelieferte JRE (Eclipse hat ein eigenes). 

Wenn also heruntergeladene jars nicht laufen, hat das was mit der in deinem System installierten Runtime zu tun. Teste das mit der PATH Variablen. Falls das nichts bringt installier mal die aktuelle 1.6.x Version anstatt der Java7.


----------



## javix (23. Mrz 2012)

Problem gefunden.

Die .jar Datei wurde mit der jre6 (x86) ausgeführt... habs jezt auf die jre7 (x64) geändert. Jezt gehts


----------



## javix (23. Mrz 2012)

Danke an alle.


----------



## javix (23. Mrz 2012)

Ok... geht doch nicht so richtig... der Fehler kommt nichtmehr aber das Programm startet nicht. (nur kurzers aufflackern eines Konsolen Fensters)


----------



## headnut (23. Mrz 2012)

maki hat gesagt.:


> Ansonsten sind headnuts vorschläge Quark..



echt?

Klingt jetzt aber irgendwie so als wäre ich doch nicht weit weg gewesen...


----------



## headnut (23. Mrz 2012)

Mach die main klasse nach den Kontruktoren

So gehts in meinem Eclipse


----------



## javix (23. Mrz 2012)

headnut hat gesagt.:


> Mach die main klasse nach den Kontruktoren
> 
> So gehts in meinem Eclipse



Nocheinmal: Es geht nicht um meine eigen erstelleten Programme! Eine .jar Datei die bei einen anderen Gerät ein Fenster aufmacht tut bei mir nichts auser dass kurz ein Konsolenfenster aufflackert.


----------



## Schwertfisch (23. Mrz 2012)

Hey,

passiert das nur wenn du die .jar mit doppelklick startest ? 

oder funktioniert es wenn du es über cmd java -jar aufrufst ? 

mfg


----------



## headnut (23. Mrz 2012)

mach jdk 1.6 drauf


----------



## javix (23. Mrz 2012)

Schwertfisch hat gesagt.:


> Hey,
> 
> passiert das nur wenn du die .jar mit doppelklick startest ?
> 
> ...



Wenn ich es mit der Konsole aufrufe funktioniert es. Also es taucht das gewünschte Fenster auf. Mit doppelklick flachert nur kurz ein konsolenfenster auf. Die jar datei funktioniert an einen anderen gerät auch mit doppelklick.


----------



## JohannisderKaeufer (23. Mrz 2012)

> Also es taucht das gewünschte Fenster auf. Mit doppelklick flachert nur kurz ein konsolenfenster auf.



Dann ist ja alles korrekt. Das Programm läuft einfach durch und wenn es fertig ist, dann schließt es das Konsolenfenster wieder. Wenn es um dein gepostetes Programm geht, dann läuft dieses auch so schnell durch, dass du davon nur ein aufflackern siehst.

Um das zu ändern kannst du beispielsweise in das Ende deiner main-Methode sowas schreiben.


```
import java.util.Scanner;

public class Test{
  public static void main(String[] args){
	System.out.println("Hallo Welt!");
	System.out.println("Enter q to quit");
	Scanner scanner = new Scanner(System.in);
	
	scanner.nextLine();
  }
}
```

Das sorgt dann dafür das das Programm, wenn es durchgelaufen ist (Hier ein Hallo Welt!), auf eine Eingabe wartet, sodaß das Fenster geöffnet bleibt, bis die Eingabe ausgeführt wurde.

Eine weitere Möglichkeit ist

```
import java.util.Scanner;

public class Test{
  public static void main(String[] args) throws Exception {
	System.out.println("Hallo Welt!");
	Thread.currentThread().suspend();
  }
}
```

Damit kann das Programm gegen Ende angehalten werden.
Wird es von der Konsole gestartet, kann man es mit CTRL-C beenden. Oder wenn es per Doppelklick gestartet wurde, das Fenster wegklicken.


----------



## hemeroc (23. Mrz 2012)

Die Problematik mit Jar-Files und Windows (Vista/7) wird hier beschrieben.
java - Executing a Jar on Vista with a double click - Stack Overflow
Inklusive Lösung.
Liebe Grüße
Hemeroc

//Edit: Irgendwie ist mir die 2te Seite des Threads entgangen ^^ aber ich lass das einfach da stehen vielleicht hilfts ja mal wem


----------



## javix (26. Mrz 2012)

Erledigt.
Mit den Programm Jarfix hat es geklappt.

Danke


----------

