Wie bringe ich dieses Programm als .jar zum laufen ?

donfellone

Mitglied
Hallo Leute,

ich kenne mich nicht sehr gut mit java aus, wir nehmen es aber gerade in der Schule (ich arbeite mit BlueJ) durch und ich habe mich aus langeweile mal an das Projekt "kifferkreisel" gemacht. :) wundert euch nich über den namen, es ist ein kreisel der seine farbe nach innen ändert und dann wider nach außen (müsst ihr nicht verstehen ist ja nicht so wichtig), wichtig ist aber, dass diese klasse auf der klasse ZEICHENFENSTER basiert, welche ich NICHT öffnen kann, ich hoffe ihr kennt die irgendwoher und könnt mir helfen ! Ich würde gerne dieses Projekt zum laufen bringen und werde jetzt hier den Quelltext von "KIFFERKREISEL" posten, damit ihr mit sagen könnt was falsch ist !
Ich werde beim speichern als jar datei nach einer main()-Methode gefragt, also hab ich einfach mal die hauptmethode meines kreisels main genannt, was mit auch nichts brachte ! Wenn ich das gespeicherte jar dann starten will sagt mein pc nur sowas wie "fatal error" oder so ähnlich.
Bitte helft mir ! DANKE !

lg

donfellone
PS: Von ZEICHENFENSTER hab ich nur ne Dokumentation, welche ich angehängt hab ! ACHTUNG Ich habe sie als "zeichenfenster.html.txt" angehängt ! Um sie nutzen zu können löscht einfach das ".txt" am ende weg und öffnet !
PSS: Wäre cool, wenn ihr den Quelltext einfach korrigieren und dann posten könntet !
__________________________________________________________________________________
hier der quelltext von kifferkreisel :
public class KIFFERKREISEL
{
private int radius;
private int farbe;
private int xmitte;
private int ymitte;
private int warte;
private int i;
private int a;
private int s;



public KIFFERKREISEL()
{
xmitte = 120;
ymitte = 120;
radius = 90;
farbe = 8;
s= 1;
i = 1;
a = 1;
warte = 150;


}





public void main()
{
while(i<6)
{
while(a<8)
{
radius = radius - 10;
farbe = farbe - 1;
ZEICHENFENSTER.gibFenster().warte(warte);
ZEICHENFENSTER.gibFenster().fuelleKreis(xmitte, ymitte, radius, farbe);
a++;}

while(s<8)
{
radius = radius + 10;
farbe = farbe + 1;
ZEICHENFENSTER.gibFenster().warte(warte);
ZEICHENFENSTER.gibFenster().fuelleKreis(xmitte, ymitte, radius, farbe);
s++;}

s = 1;
a = 1;

i++;}
}
}
 
Zuletzt bearbeitet:

MichaelR

Aktives Mitglied
Naja, dein Programm muss wissen, wo es anfangen soll. Und des sagt man ihm mit : public static void main(String [] args). Deswegen bringt es nichts, wenn du eine Methode public main() nennst, weil des eben keine main Methode ist.Des liegt dann nicht daran, ob es ein .jar File ist oder nicht.
 
Zuletzt bearbeitet:

donfellone

Mitglied
Ja, wenn ich ein Objekt der Klasse KIFFERKREISEL erzeuge und die main-Methode ausführe, läuft es perfekt ! Ich verstehe nur leider nicht was du geschrieben hast..... kannst du das mal in meinem Quelltext ergänzen ?
 

MichaelR

Aktives Mitglied
Des ist ein bisschen kompliziert, weil ich des mit der 2. Klasse nicht versteh und mir den Quelltext davon auch nicht anschauen kann. Du hast wie gesagt immer eine Startklasse, die dann so anfängt

Java:
public class startklasse{
public static void main (String []arg){
Start des Programms

Quelltext/Methodenaufrufe...

Ende des Programms
}
}

und wenn du eben einen Fehler bekommst, dass dir die main methode fehlt, dann kann des Programm net laufen


Du hast hier eine Klasse gemacht in der nur Methoden stehen, wie erstellst du denn Objekte von der Klasse?
 

MichaelR

Aktives Mitglied
Neue Klasse erstellen
Java:
public class test{
public static void main(String args[]){
Kifferkreisel kf=new Kifferkreisel();
//ich erstelle ein Objekt von Kifferkreisel, der Konstruktor wird automatisch 
//aufgerufen, deswegen sind die werte in xmitte...warte
kf.main();
//ruft die main Methode auf und führt den Quelltext aus
}
}
des sollte funktionieren und wenn du die Klasse dann als jar packst, sollte der alle Unterklassen mitnehmen und laufen.
Natürlich kannst du auch die Klasse Kifferkreisel umschreiben und da eine Main Methode reinpacken, dann sparst dir die zusätzliche Klasse. Da kommt halt dann die Frage, in wie weit man die Objektorientierung benutzen will. Hier wird ja nur ein Objekt benötigt, deswegen könnte man sich die Start Klasse sparen und die Kifferkreisel einfach hernehmen.
 

MichaelR

Aktives Mitglied
Ja, ok, dass gibt Sinn, also das dir ein Objekt erstellen lassen kannst und des dann funktionieren muss. Ich hab persönlich noch nie mit BlueJ gearbeitet aber wie es oben beschrieben ist, sollte es funktionieren. Im Prinzip macht der Quellcode oben genau des gleiche. Also ein Objekt erstellen. Wie gesagt, es ist wichtig, dass man eine Main Methode hat, damit des Programm weis wo man starten soll. Siehe Hello World
 

donfellone

Mitglied
SUPER ! Damit funktioniert es !

Ich hab noch eine Frage : Als ich in meiner klasse KIFFERKREISEL die main-methode in "public static void main(String [] args)" umbenannt, und dann in geschweiften klammern den Inhalt meiner "alten" methode reingeschrieben habe, hat mir BlueJ beim übersetzen immer die Meldung : "non-static variable i cannot be referenced by a static context". Ich kann englisch, aber warum kam dann immer die Meldung ?
 
Zuletzt bearbeitet:

MichaelR

Aktives Mitglied
Ok, also wie gesagt ich nehme eine Start Klasse
Java:
public class Startklasse{
public static void main(String[]args){
}
}

Damit weis mein Programm, in der Klasse wird gestartet er geht her und schaut was in den {} der main Methode steht.
Und hier fangen wir jetzt an zu programmieren. Man kann hier Objekte erstellen, wie ich von Kifferkreisel gemacht hab mit dem new Operator. Man kann Methoden aufrufen, entweder über die Objekte kf.main(); oder Methoden, die in der gleichen Klasse stehen. Oder einfach normalen Quellcode hinschreiben.
Aber des ist für den Anfang recht viel,weil man so Sachen wie Konstruktoren und Methoden verstehen muss.

Am einfachsten ist es am Anfang alles in einer Klasse zu programmieren, bei kleinen Programmen funktioniert das auch wunderbar.

Man könnte deine Klasse auch so umschreiben:
Java:
public class KIFFERKREISEL
{

public static void main(String [] args){
//Hier starte ich das Programm

 int radius;
 int farbe;
 int xmitte=120;
 int ymitte = 120;
 int warte;
 int i;
 int a;
 int s;
//private ist nun unnötig, des steht für die Datenkapselung, also ob andere direkt auf die Variablen zugreifen dürfen, aber da ich //des mal ohne Objekte erstellen mach, also zumindest von der Klasse Kifferkreisel.
//und natürlich können wir ihnen auch gleich Wert zuweisen, aber kann auch später passieren

radius = 90;
farbe = 8;
s= 1;
i = 1;
a = 1;
warte = 150;

//natürlich kann man Variablen auch später noch ändern wenn man jetzt a=2; schreibt verändert man den Wert von a
//jetzt können wir einfach weiter im Quelltext machen, und brauchen keine Methoden, kommt natürlich ein Quellcodeabschnitt vor
//den man evtl öfters braucht ist es wieder sinnvoll die methode auszulagern. Ich arbeite viel mit eclipse und wenn man 
//dort einfach schreibt methode(); kreidet er einem des einfach an und wenn man drüber fährt sagt er, dass man die Methode //anlegen soll und wenn man draufklickt macht der des erstmal automatisch. Man sollte sich dann aber auch mit den Methoden //auseinander setzten, also warum void oder nicht und was Übergabeparamter sind
while(i<6)
{//ok, while schleifen, die hast ja programmiert, also weist was die machen
while(a<8)
{
radius = radius - 10;
farbe = farbe - 1;
ZEICHENFENSTER.gibFenster().warte(warte);
//Hier gehst du auf eine Klasse und rufst wieder Methoden auf, den Quellcode könnte man wieder hier hin schreiben
//nur leider kann ich mir die Klasse Zeichenfenster nicht anschauen und normalerweise muss man des Objekt auch erst
//mal mit dem new Operator instanzieren ausser es ist static und kann in der Klasse referenziert werden, aber sowas müsste ich 
//auch erst mal testen, liegt der Quellcode evtl un der gleichen gleichen Klasse weiter unten? 
ZEICHENFENSTER.gibFenster().fuelleKreis(xmitte, ymitte, radius, farbe);
a++;}

while(s<8)
{
radius = radius + 10;
farbe = farbe + 1;
ZEICHENFENSTER.gibFenster().warte(warte);
ZEICHENFENSTER.gibFenster().fuelleKreis(xmitte, ymitte, radius, farbe);
s++;}

s = 1;
a = 1;

i++;}
}
} 

}//Dann machen wir hier unten noch die Klammern von der Main Methode und der Klasse zu und des Ding kann laufen, weil es weis
//wo es starten soll und was nacheinander gemacht werden soll.
Ach ja und der Quellcode der neuen Klasse ist unten beschrieben, wie gesagt ich erstell eigentlich nur ein Objekt deiner Klasse.
Des erste was passiert ist, dass der Konstruktor aufgerufen wird, des passiert immer automatisch. Und da werden dann die Werte gefüllt. Als nächstes sag ich, er soll die Methode main ausführen und dann arbeitet er den Quellcode ab.
 
Zuletzt bearbeitet:

MichaelR

Aktives Mitglied
Hmm, static Variablen.
Also du hast in deiner Klasse die Variable i (Auch alle andern) angelegt. Und wenn du von der Main Methode die Variablen der Klasse, also die, die nicht in der Main Methode stehen ansprechen willst, dann müssen die static sein. Am klügsten wär einfach, die Varialben in die main Methode zu schreiben, dann kannst darin damit arbeiten. Da fängt des mit der Objektorientierung an. Aber des ist ein bisschen komplexer.
 

donfellone

Mitglied
Also MichaelR ich muss sagen deine Erklärungen sind sehr gut ! Ich verstehe es jetzt viel besser ! Vielen Dank dass du dir so eine Mühe machst, um jemandem zu helfen ! Frohe Weihnachten !
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Eclipse und LWJGL - Bringe workspace nicht zum laufen Java Basics - Anfänger-Themen 2
H Wo in GUI-Klasse bringe ich Quellcode unter? Java Basics - Anfänger-Themen 8
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
F Kann mir jemand kurz dieses Programm erklären? Java Basics - Anfänger-Themen 22
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
1 Wie dieses Muster am einfachsten erkennen? Java Basics - Anfänger-Themen 32
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
Salvatore321 Wie kann ich dieses Zustandsdiagramm am besten Umsetzen? Java Basics - Anfänger-Themen 5
Sajeel Chattha Dieses Programm umschreiben Java Basics - Anfänger-Themen 5
M Wie erstelle ich dieses Parallelogramm??? Java Basics - Anfänger-Themen 6
P Wie kann ich die Zahlen dieses Arrays dividieren? Java Basics - Anfänger-Themen 2
G Weiß jemand wie man dieses Programm schreibt? Java Basics - Anfänger-Themen 84
A Kann mir jemand dieses Programm erklären? Java Basics - Anfänger-Themen 1
ChrisPL4Y Wieso funktioniert dieses Programm nicht? Java Basics - Anfänger-Themen 6
B Könnte jemand über dieses jurze Javaprogramm schauen? Irgendwas funktioniert mit der z-Varible nicht Java Basics - Anfänger-Themen 2
TechGirl JAVA GUI Oberfläche Umkreisung - wie heißt dieses Element? Java Basics - Anfänger-Themen 2
W Methoden Methode auf Array aufrufen, und dieses Array dabei ändern? Java Basics - Anfänger-Themen 10
Tacofan Was macht dieses "Stückchen Code"? Java Basics - Anfänger-Themen 3
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
M Warum ist dieses Feld der Klasse Math immutable? Java Basics - Anfänger-Themen 7
R Wieso funktioniert dieses Array nicht? Java Basics - Anfänger-Themen 13
M Wie heisst dieses Sortierverfahren? Java Basics - Anfänger-Themen 6
G Wo ist die Eigenschaft dieses JFrames versteckt? Java Basics - Anfänger-Themen 5
G Wie nennt man dieses Konstrukt Java Basics - Anfänger-Themen 3
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
F Was soll dieses Programm genau machen ? Java Basics - Anfänger-Themen 9
P OOP Wie schreib ich dieses Programm am besten? Java Basics - Anfänger-Themen 6
D Was genau bedeutet und bewirkt dieses @override? Java Basics - Anfänger-Themen 15
P Datentypen Warum würde dieses Beispiel nicht funktionieren? Java Basics - Anfänger-Themen 6
G Aus eigenem Panel dieses Löschen Java Basics - Anfänger-Themen 2
S für was steht dieses e ?? Java Basics - Anfänger-Themen 4
J Was bedeutet dieses a [i].length? Java Basics - Anfänger-Themen 3
R Image aus jar laden (dieses mal awt) Java Basics - Anfänger-Themen 19
W "Sprechen Sie Java?" suche dieses Buch gebraucht! Java Basics - Anfänger-Themen 11
G Dieses verdammte Regex Java Basics - Anfänger-Themen 2
H warum ist dieses Kontext static? Java Basics - Anfänger-Themen 5
G Dieses leidige ID Thema Java Basics - Anfänger-Themen 9
D Was ist denn dieses Jar ueberhaupt ? Java Basics - Anfänger-Themen 3
G Wie nennt man dieses Konstrukt: Vector<Object> Java Basics - Anfänger-Themen 2
N Ist dieses Problem mit Java zu lösen? Java Basics - Anfänger-Themen 7
C Warum funktioniert dieses Speichern in Array nicht? Java Basics - Anfänger-Themen 4
S Ist dieses Projekt realisierbar? Java Basics - Anfänger-Themen 2
D Warum läuft dieses Programm so langsam? Java Basics - Anfänger-Themen 5
B Split und dieses Zeichen "" Java Basics - Anfänger-Themen 3
G Was macht dieses Program ? Java Basics - Anfänger-Themen 13
L Dieses Problem nagt an meiner Würde - Argument * Java Basics - Anfänger-Themen 4
D Vereinfachung dieses Programms Java Basics - Anfänger-Themen 11
megachucky Suche ein paar gute Tutorials so wie dieses hier. Java Basics - Anfänger-Themen 4
M Wie auf ein Objekt zugreifen und dieses manipulieren? Java Basics - Anfänger-Themen 5
S Hilfe!!!! Wie ändere ich dieses Applet???? Java Basics - Anfänger-Themen 9
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 3
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
M Java Mail Programm Java Basics - Anfänger-Themen 4
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
M Mini Jar-Programm Java Basics - Anfänger-Themen 51
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
M Das Programm stellt nichts dar Java Basics - Anfänger-Themen 2
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
Z Programm Ideen Java Basics - Anfänger-Themen 8
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
T Programm stürzt ab Java Basics - Anfänger-Themen 40
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
Jul1n4tor Programm mit Scanner und If-Statements Java Basics - Anfänger-Themen 2
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
K Ist das Programm schlecht bzw. schlampig programmiert ? Java Basics - Anfänger-Themen 9
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
M Von Eclipse zum richtigen Programm Java Basics - Anfänger-Themen 1
nbergmann IntelliJ: Wie lade ich ein fertiges Programm aus dem Lehrbuch? Java Basics - Anfänger-Themen 26
D Anfängerfrage zu meinem Programm. Java Basics - Anfänger-Themen 15
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 22
I Jetty starten von Programm (Main) Java Basics - Anfänger-Themen 27
Kydo Programm Beschreibung Java Basics - Anfänger-Themen 3
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 7
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
D JAVA Programm schreiben Java Basics - Anfänger-Themen 46
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Wo hält das Programm an? Java Basics - Anfänger-Themen 11
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
Fugover Kopfrechnen-Programm Java Basics - Anfänger-Themen 6
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
A wie kann ich es in meinem Programm rein tun Java Basics - Anfänger-Themen 8
S Fehler beim Programm Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben