# Ubuntu-VM Java starten



## cotopaxo (22. Jul 2012)

Hi,

ich verwende derzeit eine Ubuntu-VM, auf der ich unter Eclipse eine Klasse implementiert habe, die u.a. auf zwei andere Projekte zugreift und die main-Methode enthält.

Obwohl ich Java in den Classpath eingefügt habe und die JAVA_HOME-Variable gesetzt ist, kann ich die main-Methode nicht ausführen:

_"Exception in thread "main" java.lang.NoClassDeffoundError:  ....
....
Could not find the main class: .... Program will exit._

Die JUunit-Tests hatten zumindest funktioniert. In meinem Java-Verzeichnis habe ich die folgenden Java-Unterverzeichnisse: default-java, java-1.5.0-gcj-4.6, java-1.6.0-openjdk, java-1.6.0-openjdk-amd64, java-6-openjdk, java-6-openjdk-common, java-7-openjdk-amd64.

Ist es völlig egal, welche der Unterverzeichnisse ich für die Pfade beim ClassPath und bei der JAVA_HOME verwende? Bisher konnte ich zumindest mit den Einträgen, die ich bei der Suche im Web gefunden habe, nichts mit anfangen.

Hättet ihr einen Lösungsvorschlag?

Vielen Dank und entschuldigt diese dämliche Frage

cotopaxi


----------



## tagedieb (23. Jul 2012)

Ich denke nicht, dass es etwas mit der Java runtime eniroment zu tun hat.

Wie startest du das Programm? Aus eclipse oder aus command line shell?
Hast du den pfad deines ausführbaren Programs und alle libraries in den classpath aufgenommen?


----------



## 127.0.0.1 (23. Jul 2012)

Hi,



> ...kann ich die main-Methode nicht ausführen



Die Einstellung kannst du in Eclipse machen:
wenn du eine Klasse neu anlegst, gibt es weiter unten im "New Java Class" Fenster die Optionen
"Which method stubs would you like to create?"
Und da musst du dann ein Häckchen setzten bei "public static void main(String[] args)"

Probier das doch einfach mal aus

mfg


----------



## cotopaxo (24. Jul 2012)

tagedieb hat gesagt.:


> Ich denke nicht, dass es etwas mit der Java runtime eniroment zu tun hat.
> 
> Wie startest du das Programm? Aus eclipse oder aus command line shell?
> Hast du den pfad deines ausführbaren Programs und alle libraries in den classpath aufgenommen?



Hi,

ich habe das Programm jeweils in der Kommandozeile und unter Eclipse gestartet, bei beiden Varianten taucht die Fehlermeldung auf.
Die main-Methode hatte ich auch beim Erstellen der Klasse ("New Class"...) automatisch generieren lassen.

Ich bin ehrlich gesagt etwas aufgeschmissen gerade.

Gruß cotopaxo


----------



## tagedieb (24. Jul 2012)

Dann zeig mal dein Code und Classpath oder am besten das ganze Projekt falls es nicht zu gross ist. Hast du das Program mit derselben jvm ausgeführt wie du kompiliert hast?


----------



## cotopaxo (26. Jul 2012)

Hi,

da ich selbst bei einer einfachen Stringausgabe in einer neuen Main-Methode die gleiche Fehlermeldung erhalte, dürfte es an den gesetzten Pfaden liegen, die jedoch für die Java-Umgebungsvariable und den Classpath richtig zu sein scheinen.

JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64/bin/java

und

PATH=/usr/lib/jvm/java-1.6.0-openjdk-amd64/bin

Gruß cotopaxo


----------



## Landei (26. Jul 2012)

Sollte es nicht "JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64" sein?


----------



## tagedieb (26. Jul 2012)

Ausser dem Einwand von Landei, weiss ich ohne zusätzlichen Informationen auch nicht mehr weiter.

Meldet Eclipse keine Fehler auf dem Projekt, das ev. der Build-Path invalid ist?

Sonst würd ich mal ein anderes JDK verwenden. Ev. ist das 'java-7-openjdk-amd64' ja korrupt.

Welche Implementation ist vom System als default gesetzt? Was ist die Ausgabe von 
	
	
	
	





```
which java
```
?


----------



## cotopaxo (27. Jul 2012)

Landei hat gesagt.:


> Sollte es nicht "JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64" sein?



Hi,

auch diese Anpassung (hatte ich auch schon vorher überprüft), funktioniert leider nicht....

Gruß cotopaxo


----------



## cotopaxo (27. Jul 2012)

tagedieb hat gesagt.:


> Ausser dem Einwand von Landei, weiss ich ohne zusätzlichen Informationen auch nicht mehr weiter.
> 
> Meldet Eclipse keine Fehler auf dem Projekt, das ev. der Build-Path invalid ist?
> 
> ...



Hi,

es kam bisher keine andere Fehlermeldung in Eclipse als die von mir Beschriebene. 

"which java" zeigt das Verzeichnis "/usr/bin/java" an.

Gruß und danke für Eure Geduld!

cotopaxo


----------



## tagedieb (27. Jul 2012)

"/usr/bin/java" dürfte ein symbolic link sein. Auf welche implementation referenziert dear link?

Hast du versucht es mit anderen jdks zum laufen zu bringen?


----------



## haui95 (27. Jul 2012)

Hmm ... ich denke, dass es an deinen Einstellungen liegt, jedoch ohne Code und eindeutige Fehlerbeschreibung kann man hier schlecht helfen. Ich hatte das Problem auch schon einmal mit einem Projekt von mir. Und zwar fehlte mir eine Library zur Implementierung eines Layouts, die ich nicht eingebunden hatte, sodass er mir zum Einen eine Fehlermeldung ausgegeben hat, dass die Library fehlt und zum Anderen eine Fehlermeldung, dass die Main-Klasse nicht gefunden wurde. 

Dabei stellte sich heraus, dass die Main-Klasse nicht wegen der Library nicht gefunden werden konnte, sondern aufgrund der Tatsache dass zwei JRE installiert waren. Ich würde vielleicht noch einmal überprüfen, ob alle Packages und Libraries mit eingebunden sind und ob du nicht doch eventuell mehrere Versionen der Virtuellen Maschine installiert hast. 

MfG


----------



## DaniSahne96 (27. Jul 2012)

Lass doch mal den Code rüberwachsen, ich bin zwar kein Pro, aber ich kann mir vorstellen das Fehler in der Main-Methode den Fehler zustandekommen lassen,


----------



## Mujahiddin (27. Jul 2012)

Hi, diese Fehlermeldungen habe ich auch manchmal.
Benutzt du eclipse? Wenn ja, versuch mal folgendes, mir hat das geholfen! Bei mir lag es einmal daran, dass ich eine benötigte Library in einen anderen Ordner verschoben hatte. Und ein anderes Mal lag es daran, dass ein InputStreamReader lief und sobald ein Error kam während der lief, konnte ich das Projekt nicht mehr builden. (Eclipse versucht regelmäßig deinen BIN-Ordner zu löschen!)







Die Fehlermeldung sollte sage, was das Problem ist.

Falls das nicht weiterhilft... weiß ich auch nicht. Aber wünsche dir dann viel Glück!


----------



## cotopaxo (29. Jul 2012)

tagedieb hat gesagt.:


> "/usr/bin/java" dürfte ein symbolic link sein. Auf welche implementation referenziert dear link?
> 
> Hast du versucht es mit anderen jdks zum laufen zu bringen?



Hi,

ja, hab es mit dem default-java und anderen Verzeichnissen versucht...vergebens. 

Wie gesagt, auch wenn ich neue Projekte erstelle und eine main-Methode in einer Klasse erstelle, es taucht immer die gleiche Fehlermeldung auf. Ich kann gerne noch den Code anführen, aber ich kann mir nicht vorstellen, daß es daran liegt...

Gruß cotopaxo


----------



## cotopaxo (31. Jul 2012)

Mujahiddin hat gesagt.:


> Hi, diese Fehlermeldungen habe ich auch manchmal.
> Benutzt du eclipse? Wenn ja, versuch mal folgendes, mir hat das geholfen! Bei mir lag es einmal daran, dass ich eine benötigte Library in einen anderen Ordner verschoben hatte. Und ein anderes Mal lag es daran, dass ein InputStreamReader lief und sobald ein Error kam während der lief, konnte ich das Projekt nicht mehr builden. (Eclipse versucht regelmäßig deinen BIN-Ordner zu löschen!)
> 
> 
> ...



Hi,

im Error-Log taucht komischerweis gar nichts auf, wenn ich die Mainmethode ausführen will.

Gruß Cotopaxo


----------



## tagedieb (31. Jul 2012)

Dann nochmal von vorne..

Werden die .class Dateien beim Compilieren im Outputfolder des Projekts erstellt? Auch wenn du sie vorher gelöschst hast?

Welches JRE/JDK ist im Projekt Build Path definiert?

Läuft der Workspace/Projekt auf einem andern PC (Windows/Unix)?

Wie gesagt du musst schon ein bischen mehr zeigen, wenn man dir helfen will.


----------



## cotopaxo (31. Jul 2012)

tagedieb hat gesagt.:


> Dann nochmal von vorne..
> 
> Werden die .class Dateien beim Compilieren im Outputfolder des Projekts erstellt? Auch wenn du sie vorher gelöschst hast?
> 
> ...



Hi,

im Build Path in Eclipse ist JavaSE-1.6 eingestellt.

Wie gesagt, ich benutze eine Ubuntu-VM, mein Workspace-Verzeichnis liegt im Home-Verzeichnis.

Der Code der Implementierung (zum Testen):


```
public class JVMProblem {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.print("hallo");

	}

}
```

Im Error-Log  steht zwar eine Fehlermeldung:

"Invalid preference page path: XML Syntax"

dies erfolgt aber nicht im Zusammenhang des Ausführens der Main-Methode.

Frage 1 ist mir nicht ganz klar...

Gruß cotopaxo


----------



## tagedieb (31. Jul 2012)

Hast du schon mal ein 
	
	
	
	





```
eclipse -clean
```
 ausgeführt oder einen neuen Workspace aufgemacht?

siehe Eclipse Community Forums: Newcomers  Error: Invalid preference page path: XML Syntax


----------



## cotopaxo (31. Jul 2012)

tagedieb hat gesagt.:


> Hast du schon mal ein
> 
> 
> 
> ...



Hi,

nein, noch nicht. Ich werde es zumindest mal versuchen. 

Gruß cotopaxo


----------



## cotopaxo (1. Aug 2012)

Hi,

zumindest eclipse -clean hat leider nichts gebracht...

Gruß cotopxao


----------



## cotopaxo (1. Aug 2012)

Hallo,

das Ausführen von Main-Methoden von projekten, die in einem anderen Workspace liegen, funktioniert. Immerhin weiss ich jetzt, daß es irgendwie an dem Workspace-Verzeichnis liegt...

Gruß cotopaxo


----------



## Mujahiddin (1. Aug 2012)

"Invalid preference page path: XML Syntax"

Eclipse Community Forums: Newcomers  Error: Invalid preference page path: XML Syntax



> I was able to fix it by creating a new workspace and then importing my project into it. If you had an original installation of Eclipse, then downloaded a new eclipse, readded all your android, ect. into it, you might get this error. Probably has to do with the XML with different keys from the old version in your hidden files in your workspace!


----------



## tagedieb (1. Aug 2012)

Dann lösche das .metadata Verzeichnis. Da scheint irgendwas ungültig zu sein.
Nach dem Neustart musst du zwar die Projekte neu importierten, aber danach sollte der Workspace wieder funktionieren!


----------



## HoaX (1. Aug 2012)

Sicher das du beim Starten über Konsole das .class nicht mit angegeben hast? Also 
	
	
	
	





```
java JVMProblem.class
```
 anstatt korrekt 
	
	
	
	





```
java JVMProblem
```


----------

