Anfänger-Frage zu jar-Files / Manifest.mf / Classpath

Status
Nicht offen für weitere Antworten.

javaner08

Aktives Mitglied
Hallo,

ich habe mit JAVA bislang nur ein paar Grundlagen-Erfahrungen gesammelt, jetzt muss ich da ein wenig
tiefer einsteigen.
Leider scheitert das schon beim Erstellen des jar-Files, und ... JA : Ich habe gegoogelt und mir die FAQ's hier im
Forum durchgelesen, aber ich komme einfach nicht weiter.

Also, folgende Situation :
Ich hab' mir das berühmte "Hello World"-Progrämmchen zusammen gebastelt, mit dem jeder mal anfängt, wenn er
eine neue Sprache lernt.

Das sieht so aus :

Code:
import test1.*;
import java.util.*; 
 
public class pgm1
{
  private 	  Scanner scan_me; 	     
	    
  public pgm1() {	  
	  scan_me = new Scanner(System.in);
  }
  
  public String einlesen () {
	  return scan_me.nextLine(); 
  }

  public static void main( String[] args )
  {	  
    new demoKlasse().hello();
    
    pgm1  p = new pgm1();
    String s1 =   p.einlesen();
    System.out.println(s1);
    System.out.println("Ende");    
  }
}

d.h. das eigentliche "Hello World" steckt im Package "test1" und sieht so aus :

Code:
package test1;

public class demoKlasse
{
  public void hello()
  {
    System.out.println ("Hallo Java");
  }
}

... und nachdem "Hallo Java" ausgegeben wird, wartet er noch auf eine Tastatur-Eingabe und gibt dann
die Tastatur-Eingabe aus.
Und... hey : Bitte nicht auslachen, ist mein erstes, eigenes JAVA-Test-Programm. Irgendwo muss man ja mal anfangen ....

Unter eclipse (in der eclipse-Konsole) funktioniert das auch tadellos, aber wenn ich im eclipse das ganze in ein jar-File exportiere und anschliessend versuche, das ganze über diese Zeile zu starten :

java -jar uebungen.jar

dann erhalte ich ständig die Meldung

"NoClassDefFoundError : uebungen.pgm1"

In der uebungen.jar sind folgende Dateien enthalten :

Die Datei.classpath mit folgendem Inhalt :

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path=""/>
</classpath>

Eine Datei namens .project mit folgendem Inhalt :

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>uebungen</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

die "demoKlasse.class",
die "pgm1.class"
sowie die "Manifest.mf" mit folgendem Inhalt :

Manifest-Version: 1.0
Main-Class: uebungen.pgm1
Class-Path: C:\Programme\java\jdk1.5.0_11
Class-Path: C:\javatest\pgm1
 

Wildcard

Top Contributor
Wenn deine Klasse pgm1 (Klassen werden groß geschrieben) nicht in einem Package liegt (jede Klasse sollte in einem Package liegen), dann ist die Main-Class nicht uebungen.pgm1, sondern pgm1
 

javaner08

Aktives Mitglied
pgm1 liegt in "(default package)".
Ich hab's sowohl mit- als auch ohne "uebungen." probiert, beides lief nicht.

Dann habe ich die Klassennamen nochmal komplett in Groß-Schreibung geändert und läuft auch nicht ...
 

Wildcard

Top Contributor
default package ist kein package.
Wenn du es ohne .uebung versucht hast, war die Fehlermeldung eine andere.
 

javaner08

Aktives Mitglied
So, ich habe das jetzt mal ein wenig vereinacht. Mir geht's ja jetzt hier in diesem Beispiel auch nicht so sehr um JAVA-Programmierung an sich, sondern darum, ein lauffähiges jar-Files zu erstellen.


Also um es mal ein bisschen zu vereinfachen habe ich dieses zweite Test-Package ("test1") mal wieder entfernt und
für die Klasse "PGM1" ein eigenes Package erstellt.

Jetzt sieht's so aus :

Code:
package PACK1;
import java.util.*; 
  
public class PGM1
{
  private 	  Scanner scan_me; 	     
	    
  public PGM1() {	  
	  scan_me = new Scanner(System.in);
  }
  
  public String einlesen () {
	  return scan_me.nextLine(); 
  }

  public static void main ( String[] args )
  {	  
	System.out.println ("Hallo Java");
    
    PGM1  p = new PGM1();
    String s1 =   p.einlesen();
    System.out.println(s1);
    System.out.println("Ende");    
  }
}


und die Manifest-Datei sieht jetzt so aus :

Manifest-Version: 1.0
Main-Class: PACK1.PGM1
Class-Path: C:\JAVA_UEBUNGEN
Class-Path: C:\Programme\java\jdk1.5.0_11

und die Fehlermeldung lautet nun :

Exception in Thread "main" : java.lang.NoClassDefFoundError : PACK1/PGM1
 

Wildcard

Top Contributor
-Packages schreibt man klein
-der Class-Path Eintrag darf nur einmal vorkommen (mehrere Einträge mit Leerzeichen getrennt)
-am Ende muss ein zusätzlicher Linefeed stehen.
 

javaner08

Aktives Mitglied
Es ist wirklich zum verzweifeln ... Projekt im eclipse komplett neu angelegt, diesmal
der Package-Name in klein. Und das mit dem Linefeed zum Schluss der Manifest-Datei
hatte ich sowieso schon drin, dass stand ja auch schon hier in den FAQ's drin...

Die Fehlermeldung lautet nach wie vor :

Exception in thread "main" java.lang.NoClassDefFoundError: testpack/PGM1




Code:
package testpack;
import java.util.*; 
  
public class PGM1
{
  private 	  Scanner scan_me; 	     
	    
  public PGM1() {	  
	  scan_me = new Scanner(System.in);
  }
  
  public String einlesen () {
	  return scan_me.nextLine(); 
  }

  public static void main ( String[] args )
  {	  
	System.out.println ("Hallo Java");
    
    PGM1  p = new PGM1();
    String s1 =   p.einlesen();
    System.out.println(s1);
    System.out.println("Ende");    
  }
}

Manifest-Version: 1.0
Main-Class: testpack.PGM1
Class-Path: C:\Programme\java\jdk1.5.0_11 C:\JAVA_UEBUNGEN\testpack
 

Wildcard

Top Contributor
Sollte eigentlich funktionieren.
Lass mal sicherheitshalber den Class-Path komplett weg (wofür eigentlich die JRE in den Classpath aufnehmen?)
 

javaner08

Aktives Mitglied
Hab' den Class-Path weg gelassen.

Jetzt findet er zwar "pgm1", aber nicht diese "Scanner-Klasse", die es seit Java 1.5 gibt.

Konkret sieht die Ausagbe jetzt wie folgt aus :


Hallo Java
Exception in thread "main" java.lang.NoClassDefFoundError: java/util/Scanner
at testpack.PGM1.<init>(PGM1.java:9)
at testpack.PGM1.main(PGM1.java:20)

also wie gesagt :
pgm1 findet er jetzt, aber wenn ich den classpath weg lasse, dann scheitert er in dem Moment, wenn
diese Scanner-Klasse aufgerufen wird.

Hier der Vollständigkeit halber die aktuelle Manifest-Datei :

Manifest-Version: 1.0
Main-Class: testpack.PGM1


WO kann ich denn jetzt den Class-Pfad eintragen, damit er BEIDES findet, pgm1 und scanner ?
 

javaner08

Aktives Mitglied
hey, guter Tipp ! Danke !

Jetzt kommen wir der Sache doch langsam auf die Spur :
Er hat tatsächlich die Version 1.4 angezeigt.

Fragt sich nur, warum ?

Wenn ich mir mit "set | more" die Umgebung anzeigen lasse, dann steht sowohl unter classpath als auch
unter JAVA_Home der Pfad "C:\Programme\java\jdk1.5.0_11

Wo kann man denn noch überall den Pfad zur Java-Runtime einstellen ?
 

javaner08

Aktives Mitglied
P.S. auch wenn ich im eclipse unter "properties" für das Projekt und dort unter "Order and Export" nachschaue,
dann listet er mir da "jre System Library jdk 1.5xxxx" auf....
 

Lim_Dul

Top Contributor
Das ist die Version, für die Eclipse exportiert.
Das ist nicht umbedingt die Version, die installiert ist.

EDIT: Schau mal nach ob in der PATH-Variablen der Pfad zum java 1.4 BIN Verzeichnis drin ist.
 

Wildcard

Top Contributor
Entscheidend ist (wie Lim_Dul sagt) was in PATH steht, denn dort sucht dein Betriebsystem nach dem Programm.
 

javaner08

Aktives Mitglied
Jaaaaa !!!!! Es funktioniert !! :D :cool:

Danke an alle, die sich die Zeit genommen haben, zu helfen !


Also, zur "Auflösung" dieses Problems (nur für den Fall, das Andere "Anfänger" mal vor denselben Schwierigkeiten stehen) :

zuvor sah die Batch-Datei, mit der ich mein jar-File aufgerufen habe, wie folgt aus :

java -jar test.jar
pause

nun hab' ich es so geändert :

C:\Programme\Java\jdk1.5.0_11\bin\java -jar test.jar
pause

und endlich funktioniert es.

Des Rätsels Lösung :
Ich hatte in meiner Path-Variablen u.a. den folgenden Eintrag drin :

C:\Oracle\Ora92\jdk\bin

... und dort stand noch die 1.4er-Version drin und die wiederum kennt die scanner-Klasse noch nicht.

Deshalb auch diese Fehlermeldung "....notFound" (siehe oben) : Es lag' gar nicht daran, dass er java nicht finden konnte, sondern daran, dass er die richtige Version von java nicht finden konnte, denn die 1.5-er Version liegt bei
mir unter C:\Programme\java.

OK, dann muss ich bei mir auf der Festplatte ein bisschen aufräumen und auch mal die path-Variable anpassen....

Für die Manifest-Datei waren jedenfalls die folgenden Einträge ausreichend :

Manifest-Version: 1.0
Main-Class: testpack.PGM1

... und anschliessend einfach mit der export-Funktion von eclipse ein jar-File erstellen und das war's.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
C Input/Output Anfänger Array-Verständnis Frage Java Basics - Anfänger-Themen 7
Spin KI Anfänger Frage : Timer Problem Java Basics - Anfänger-Themen 6
Spin Einfache Anfänger Frage setVisible von Panels Java Basics - Anfänger-Themen 5
P GUI Anfänger Frage Java Basics - Anfänger-Themen 4
S Java Anfänger - Tutorial Frage Java Basics - Anfänger-Themen 10
F Bubblesort---Frage von Anfänger Java Basics - Anfänger-Themen 2
L eine richtige anfänger-frage Java Basics - Anfänger-Themen 3
L Totale Anfänger Frage Java Basics - Anfänger-Themen 20
U Anfänger Frage - Ausgabe funktioniert nicht - Wieso? Java Basics - Anfänger-Themen 10
N RMI Anfänger Frage Java Basics - Anfänger-Themen 2
T Saudumme Frage, Sorry bin Anfänger :-/ Java Basics - Anfänger-Themen 12
J Anfänger-Frage Java Basics - Anfänger-Themen 4
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
H Threads Anfänger Java Basics - Anfänger-Themen 17
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
_Zabuza_ Erste Schritte Wie am effektivsten Java lernen als Anfänger? Java Basics - Anfänger-Themen 12
T Roulette für Anfänger Java Basics - Anfänger-Themen 7
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
K Java Anfänger Java Basics - Anfänger-Themen 5
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
S Ein Java Anfänger braucht Hilfe Java Basics - Anfänger-Themen 5
P Übungsaufgaben für Anfänger? Java Basics - Anfänger-Themen 2
Z Unklarheit bei Übungsaufgabe [Anfänger] Java Basics - Anfänger-Themen 22
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
CT9288 Mini Anfänger-Problem mit loops, statements und ; Java Basics - Anfänger-Themen 4
F Hilfe, bin Anfänger! Java Basics - Anfänger-Themen 4
R Erste Schritte Materialien für Java-Anfänger Java Basics - Anfänger-Themen 7
F Studium aufgabe ...Anfänger sucht hilfe :D Java Basics - Anfänger-Themen 24
F Anfänger braucht Hilfe :) Java Basics - Anfänger-Themen 3
F Abrechnungsprogramm erstellen Student (Anfänger) Java Basics - Anfänger-Themen 2
D Anfänger braucht Hilfe Java Basics - Anfänger-Themen 2
J Musikplayer zu schwer für Anfänger? Java Basics - Anfänger-Themen 3
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
V Erste Schritte Anfänger: Ausführen eines Java-Programms Java Basics - Anfänger-Themen 5
Textsurfer Methoden Anfänger * Java Basics - Anfänger-Themen 5
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
C verwirrter Anfänger Java Basics - Anfänger-Themen 6
L Verzinsungsprogramm (Java-Anfänger) Java Basics - Anfänger-Themen 3
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
H Methoden Bluej Anfänger Java Basics - Anfänger-Themen 13
M Erste Schritte Einfache Aufzugssteuerung programmieren - Anfänger Java Basics - Anfänger-Themen 2
D Anfänger-Problem mit dem HalloWelt-Programm Java Basics - Anfänger-Themen 5
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
V Erste Schritte Java-Anfänger braucht Hilfe bei Arrays Java Basics - Anfänger-Themen 19
V Array mit Zufallszahlen - Anfänger - Hilfe Java Basics - Anfänger-Themen 12
J Anfänger hat Problem mit seinen Beet Java Basics - Anfänger-Themen 12
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
das_leon if als Auswahl (Anfänger) Java Basics - Anfänger-Themen 1
N Anfänger Problem Java Basics - Anfänger-Themen 4
GoodGuy [Anfänger] Kann mal wer drüber gucken? Java Basics - Anfänger-Themen 3
R Erste Schritte Anfänger Probleme bei AnimationDrawable Java Basics - Anfänger-Themen 0
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
C Taxiwarteschlange - Anfänger Java Basics - Anfänger-Themen 2
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
I Java, Application, Eclipse (Anfänger) Java Basics - Anfänger-Themen 1
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
C Anfänger: Array + Klasse Java Basics - Anfänger-Themen 5
S OOP Uhrenanzeige programmieren, Achtung Anfänger! Java Basics - Anfänger-Themen 9
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
I totaler Anfänger braucht Hilfe Java Basics - Anfänger-Themen 8
I Erste Schritte Bücher für Jungedliche[Anfänger] Java Basics - Anfänger-Themen 20
T Hallo anfänger braucht Hilfe :D Java Basics - Anfänger-Themen 7
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
J Hilfe für Anfänger Java Basics - Anfänger-Themen 8
E OOP Methode an andere Methode übergeben / OOP Anfänger Java Basics - Anfänger-Themen 4
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
H MergeSort (für Anfänger ) Java Basics - Anfänger-Themen 9
X Projekt Java Anfänger Java Basics - Anfänger-Themen 28
C Fehlersuche Adressbuch *Anfänger* Java Basics - Anfänger-Themen 5
C Anfänger braucht Hilfe bei Schularbeit Java Basics - Anfänger-Themen 3
J Erste Schritte Hilfe bei absolutem Anfänger-Projekt Java Basics - Anfänger-Themen 4
F Anfänger braucht Hilfe Java Basics - Anfänger-Themen 24
A Erste Schritte Übungen für Anfänger Java Basics - Anfänger-Themen 31
M Sieb des Eratosthenes für Anfänger Java Basics - Anfänger-Themen 10
M Tipps für einen Java-Anfänger Java Basics - Anfänger-Themen 5
S Anfänger Aufgaben Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben