could not fin d the main class. program will now exit

Status
Nicht offen für weitere Antworten.

eicon11

Aktives Mitglied
Hi dieser Fehler kommt, immer wenn ich mein java Programm auf dem Rechner von meinem Vater starten will. Bei mir funktioniert das Programm einwahnfrei, nur bei ihm nicht.
Meine Manifest.MF sieht folgendermaßen aus

Manifest-Version: 1.0
Class-Path: .
Created-By: 1.6.0_03 (Sun Microsystems Inc.)
Main-Class: Main

Allerdings ist die Java version die er auf seinem Pc drauf hat schon veraltet, (1.4. irgendwas) eine neue kann er aber nicht drauf machen, da er keine administrativen Rechte hat.
Kann mir jemand sagen wie ich dieses Problem lösen kann ? Oder was für Daten ihr braucht um dazu was zu sagen.
 
Eigentlich braucht man dafür den Stacktrace (das jar in der Konsole mit java -jar DeineJar.jar ausführen), aber in deinem Fall würde ich sagen, du hast nicht 1.4 kompatibel, sondern für 1.5 oder höher kompiliert.
 
Und wie kann ich für 1.4 kompilieren ? ich benutze NetBeans gibt es da irgendwas was man einstellen kann ?
 
Rechtsklick auf dein Projekt -> Properties -> Sources
und dann in der JComboBox bei Source/Binary Format den gewünschten Level auswählen:
Bildschirmfoto-Project%20Properties%20-%20Chess.png
 
Ok, hab ich gefunden, allerdings kommt jetzt ein Fehler
java.lang.UnsupportedClassVersionError: Main (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:509)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:246)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322)
Exception in thread "main"
Java Result: 1
Kann es sein dass die Swing Elemente in java 1.4 nicht angezeigt werden können ?
 
Ok wenn ich mir den Code so angucke bin ich mir eigentlich ziemlich sicher das 1.4 swing nicht unterstützt :-( es gibts nicht zufällig ne Möglichkeit alles in AWT zu konvertieren ohne das ich alles neu machen muss ? *hoff*
 
Oder von mir aus auch, dass ich irgendwie die komplette Swing Palette in das Progrmm importiere, die Hauptsache ist nur das ich nichts installieren muss.
 
Swing ist in Java seit der Version 1.2 standardmäßig Teil des JDK. Für ältere Versionen gibts ein Swing-PlugIn.
Nach Java 1.4 kamen IMHO keine neuen GUI-Elemente ins JDK. Dein Problem hat meiner Meinung nach nichts mit Swing zu tun. Vielmehr wurde der Bytecode in Java 1.5 durch neue Features so verändert, dass er nicht mehr mit älteren JREs ausgeführt werden kann. Du musst also alle .class-Dateien entfernen und komplett neu kompilieren. Wenn's gar nicht geht, kannst du immer noch das JDK 1.4.2 installieren, NetBeans bekanntmachen und erneut kompilieren.

FAQ hat gesagt.:
- UnsupportedClassVersionError
Wird geworfen wenn versucht wird eine Klasse zu laden, das Format des Bytecodes aber nicht mit dem, der aktuellen Java Version übereinstimmt. Beispiel:
Exception in thread "main" java.lang.UnsupportedClassVersionError: <Klasse>
(Unsupported major.minor version 49.0)

In diesem Fall wurde die Klasse mit Java 1.5 kompiliert, aber versucht mit Java 1.4 auszuführen.
 
Ok, jetzt kann ich es kompilieren, allerdings lässt sich die .jar datei nicht ausführen, also bei doppelklick passiert einfach nichts.Wenn ich die Datei allerdings in NetBeans ausführe startet sie ganz normal. NetBeans hat jetzt im dist Ordner noch einen lib Ordner erstellt wo eine swing-layout-1.0.3.jar Datei drinn ist. die Manifest.MF sieht so aus
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.6.0_03-b05 (Sun Microsystems Inc.)
Main-Class: Main
Class-Path: lib/swing-layout-1.0.3.jar
X-COMMENT: Main-Class will be added automatically by build
Und wenn ich es bei meinem Vater ausführen will kommt ein Fatal Error und das Programm wird geschlossen.
1.4.2 hab ich schon installiert, wenn ich es aber als Java Platform auswähle werden mir die ganzen Swing-Elemente Rot angezeigt das die sachen alle nicht existieren.
 
eicon11 hat gesagt.:
1.4.2 hab ich schon installiert, wenn ich es aber als Java Platform auswähle werden mir die ganzen Swing-Elemente Rot angezeigt das die sachen alle nicht existieren.
Schau dir mal den Quelltext an, wo genau die Fehler auftreten, ich vermute es kommen einfach irgendwelche Syntaxelemente vor, die in Java 1.4 noch nicht existierten (z.B. @Override o.ä.). Ich habe Swing schon öfters unter Java 1.4.X laufen lassen.
 
Das Problem ist aber, das die roten Zeilen in dem von NetBeans geschütztem GUI-bereich ist, d.h. ich kann da nichts verändern ich zeige euch mal wie dass aussieht : (Alles was unterstrichen ist wird rot angezeigt

javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
.addComponent(startDrucker)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
.addComponent(eingabeDrucker, javax.swing.GroupLayout.DEFAULT_SIZE, 736, Short.MAX_VALUE))
.addContainerGap())
);


Der Fehler ist soweit ich das überblickt habe immer etwas mit "package javax.swing.GroupLayout does not exist"
und die daraus resultierenden, wie Variable in javax ... does not exist usw.
 
Du musst neben der erzeugten Jar-Datei auch das Verzeichnis lib mit der darin befindlichen jar-Datei ausliefern. Du hast offenbar deine Komponenten mit Matisses Standard-LayoutManager "Freedesign" zusammengeklickt.
 
eicon11 hat gesagt.:
Der Fehler ist soweit ich das überblickt habe immer etwas mit "package javax.swing.GroupLayout does not exist"
und die daraus resultierenden, wie Variable in javax ... does not exist usw.
GroupLayout verwendet NetBeans standardmäßg als Layout, dieses liegt in NetBeans normalerweiße als Bibliothek unter Libraries im Projektverzeichnis. Vielleicht ist da irgendwas schiefgegangen.
Du kannst auch einfach versuchen soweit möglich auf NullLayout umzustellen, damit hast du auf keinen Fall Probleme mit irgendwelchen Libs.
 
hmm, ich hab jetzt einfach das Layout neu gestaltet, also erst auf 1.4 umgestellt und dann das Layout einfach nochmal neu gemacht mit den gleichen Sachen.Jetzt funktioniert es auch auf dem Rechner von meinem Vater.
Danke euch für die Hilfe !
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben