Implementierung gcd();square()

mihe7

Top Contributor
Neiiiiin. Du sollst nach C:\users\acer\OneDrive\.......\assignmentXX\assignment01\src wechseln (hinten das assignmentXX weglassen).
 

jono

Top Contributor
Neiiiiin. Du sollst nach C:\users\acer\OneDrive\.......\assignmentXX\assignment01\src wechseln (hinten das assignmentXX weglassen).
Ja, okay wusste nicht, was du mit zu tief meintest hätte ja auch einfach mal nachfragen können ^^
1619297346827.png
Das Problem ist das Projekt beinhaltet zwei Packages mit ihren jeweiligen Namen. Also eher die Frage, ob es ein Problem ist?
Java:
package assignmentXX;

import de.(schwarz im Screen).intmaths.IntMaths;

public class Maths implements IntMaths {
    
    public static void main(String[] args) {
        Maths mf = new Maths();
        System.out.println(mf.gcd(16, 4));
        System.out.println(mf.sqrt(25));
        System.out.println(mf.square(11));
    }

    @Override
    public int gcd(int a, int b) throws IllegalArgumentException {
        if (a == 0 && b == 0) {
            throw new IllegalArgumentException();
        } else if (b == 0) {
            return a;
        }
        return gcd(b, a % b);
    }

    @Override
    public int sqrt(int x) throws IllegalArgumentException {
        if (x < 0) {
            throw new IllegalArgumentException();
        }
        return (int) Math.sqrt(x);
    }

    @Override
    public int square(int x) throws IllegalArgumentException {
        if ((int) Math.pow(x, 2) > Integer.MAX_VALUE) {
            throw new IllegalArgumentException();
        }
        return (int) Math.pow(x, 2);
    }

}
So sieht übrigens die Klasse aus. Die implementiert ein jar-Klassen Interface
 
K

kneitzel

Gast
Also den Ordner wechseln ist nicht nötig, wenn der Pfd nicht relativ angegeben wird. Daher ist es erst einmal egal, wo er genau steht.

Aber der Pfad sieht dubios aus - So wie ich das sehe, sind da Leerzeichen im Pfad. Und ist das Verzeichnis wirklich mit "(" und ")"?

Das sollte aber egal sein - nutze doch einfach die Tab Taste zur Autovervollständigung. Also nur eingeben:
cd c:\us
und dann tab drücken - dann sollte er es automatisch vervollständigen zu c:\users\
Dann ac und tab dann solltest Du c:\users\acer\ da stehen haben ...
u.s.w.

Und wenn da ein Pfad wirklich irgendwelche Leerzeichen oder so hat, dann macht die Autovervollständigung automatisch Quote Zeichen, sprich dann hat man automatisch
cd "c:\users\acer\.......

Eine weitere Möglichkeit: Einfach den gewünschten Ort im Explorer suchen. Dann einfach in einer Eingabeufforderung cd mit Leerzeichen eingeben und dann den Ordner as dem Explorer in die Eingabeaufforderung ziehen ...
 

mihe7

Top Contributor
Habs im Screen aber anders gemacht also direkt so wie mihe es gesagt hat.
Du hast irgendwas gemacht, aber nicht das, was ich geschrieben hatte :)

Das Problem ist das Projekt beinhaltet zwei Packages mit ihren jeweiligen Namen. Also eher die Frage, ob es ein Problem ist?
Wir kommen der Sache langsam näher. Übersetz mal mit javac -cp . assignmentXX\Maths.java.

Nachtrag: hab das mit dem Jar überlesen (s. @kneitzel). Du musst also javac -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX\Maths.java verwenden.
 

jono

Top Contributor
Aber der Pfad sieht dubios aus - So wie ich das sehe, sind da Leerzeichen im Pfad. Und ist das Verzeichnis wirklich mit "(" und ")"?
Leerzeichen sind da auf jeden Fall keine. Was ist mit der Frage gemeint, wo ist ("und")?
Wenn das Interface in einem Jar ist, dann musst Du das jar auch mit angeben, damit er das findet.
Das geschieht mit dem Kommandozeilen Argument -classpath gefolgt mit dem, was er einbinden soll.
Also ich weiß gerade nicht welche Reihenfolge ich jetzt noch befolgen soll^^ Wenn ich das jar mit angeben soll:
Du hast irgendwas gemacht, aber nicht das, was ich geschrieben hatte :)
Doch ich habe doch genau das gemacht? Frage: Was davon habe ich nicht gemacht? Das würde mir helfen.

Wenn ich dann jetzt in der Eingabeaufforderung bin: Erstmal (korrigiert mich bitte):
C:\Users\acer\OneDrive\Dokumente\assignmentXX(...)\assignmentXX\assignment01\src
Dann nochmal cd gefolgt von dem von dem Pfad in der das jar-interface liegt? Bin gerade ehrlich gesagt etwas durcheinander gekommen...
 

mihe7

Top Contributor
Doch ich habe doch genau das gemacht? Frage: Was davon habe ich nicht gemacht? Das würde mir helfen.
Soll ich das jetzt echt aufschreiben? Du hast in #47 einen Screenshot gepostet, bei dem Du im Verzeichnis ...\src\assignmentXX stehst. Darauf hin habe ich Dir geschrieben, Du sollst cd .. eintippen, um ein Verzeichnis höher zu kommen. Hättest Du das an der im Screenshot aus #47 gezeigten Stelle gemacht, wärst Du im richtigen Verzeichnis gelandet.

In #50 zeigst Du, dass Du zwischenzeitlich in das Verzeichnis C:\Users\acer gewechselt bist (vermutlich neues Fenster geöffnet) und dort auch nicht einfach nur cd .. eingegeben, sondern noch irgendwas hintendran gesetzt hast. Was soll das bringen?
 
K

kneitzel

Gast
Mit cd wechselst du in ein Verzeichnis. Daher macht das nur einmal Sinn.

Evtl. würde es Sinn machen, sich die Basics einer Kommandozeile anzueignen? Damit klar ist, was die einzelnen Befehle machen.

Und ich war schlicht verwirrt, weil du Dinge schwärzt und durch (...) ersetzt und so ...

Und ggf. als Idee: man könnte den Aufruf unabhängig vom Arbeitsverzeichnis machen und alles per Drag & Drop machen?

Also Source und Target mit als Parameter angeben?

Die Aufrufe sind eh viel zu lang und immer eingeben? Also ein einfaches .bat oder .cmd schreiben ... aber da bräuchte man dann etwas mehr Erfahrung eben mit der Kommandozeile, denn ich würde die Einstellungen über Variablen machen als z.B. SOURCEDIR setzen und so um das dann im Aufruf zu verwenden. Und CLASSPATH würde im Script angepasst/gesetzt ...
 

jono

Top Contributor
Soll ich das jetzt echt aufschreiben? Du hast in #47 einen Screenshot gepostet, bei dem Du im Verzeichnis ...\src\assignmentXX stehst. Darauf hin habe ich Dir geschrieben, Du sollst cd .. eintippen, um ein Verzeichnis höher zu kommen. Hättest Du das an der im Screenshot aus #47 gezeigten Stelle gemacht, wärst Du im richtigen Verzeichnis gelandet.
1619299451798.png@mihe7 Also erstmal so.
javac -cp . assignmentXX\Maths.java
Und wann soll ich das anwenden bzw. das analoge dazu mit der .jar? jetzt direkt im Anschluss denke ich mal oder? Will nur auf Nummer sicher gehen.
Warum dann so bescheuerte Pfade, warum OneDrive und warum keine " "-Zeichen?
Was ist denn an dem Pfad bescheuert? Mit OneDrive das hatte ich schon erklärt und was ist mit " " gemeint? Wo kommen die vor, das weiß ich jetzt nicht
 
K

kneitzel

Gast
Und OneDrive ist doch egal - das bedeutet ja nur, dass ein Programm im Hintergrund die Dateien in die Cloud kopiert.... irgendwie muss man doch Traffic erzeugen :)
 

jono

Top Contributor
Und ich war schlicht verwirrt, weil du Dinge schwärzt und durch (...) ersetzt und so ...
Ja ich weiß, da steht nur normaler Text anstelle dessen.
Und ggf. als Idee: man könnte den Aufruf unabhängig vom Arbeitsverzeichnis machen und alles per Drag & Drop machen?
Das ist eine gute Idee. Und zum letzteren Absatz, da brauche ich echt erst etwas mehr Erfahrung, würde es jetzt erstmal gerne so machen, um nicht ganz rauszukommen
 

jono

Top Contributor
In #67 habe ich ja erstmal von vorne angefangen, sonst komme ich echt raus, gerade aufgrund der nicht vorhandenen Erfahrung gehe ich gerade erstmal so vor. Also
Übersetz mal mit javac -cp . assignmentXX\Maths.java.
Was ist denn hier genau jetzt mit übersetzen gemeint? Das wäre gut zu wissen, um das evtl. besser einordnen zu können und die Funktionalität in dem Ablauf davon zu verstehen
 

jono

Top Contributor
Da Du eine Klasse aus einer Jar brauchst, sollst Du das gar nicht mehr anwenden, sondern gleich die Zeile verwenden, wo die Jar angegeben ist.
Wie jetzt ? :D Also es gibt ja zwei Packages in dem Projekt, einmal in der die jar liegt und einmal in der die auszuführende Klasse liegt.
Kompilieren. javac ist der Java-Compiler, der Quelldateien (.java) in Classfiles (.class) übersetzt.
Ja das weiß ich ja. Ist es denn zwangsläufig notwendig das mit "-cp" zu machen? Sonst findet er die Klasse nicht direkt, oder?
1619300695658.png
Jetzt stellt sich mir die Frage, was genau ich mit cp bewirke, der Classpath ist doch dafür da damit die JVM weiß, wo sie suchen muss.
Wie kann ich jetzt weiter vorgehen, kann mir das Ganze gerade wirklich nicht zusammenrimmen, bitte um ein wenig weitere Hilfe...
 
Zuletzt bearbeitet:

gtagta

Mitglied
Wechsele doch mal in das vermutlich richtige Verzeichnis und gib dort einmal
tree /A
und einmal
tree /A /F
ein.

Die Ausgabe kannst du kopieren und sensible Bezeichner durch _-Zeichen o. ä. ersetzen.
 

mihe7

Top Contributor
Also es gibt ja zwei Packages in dem Projekt, einmal in der die jar liegt und einmal in der die auszuführende Klasse liegt.
Mach mal das, was @gtagta geschrieben hat, damit wir hier nicht aneinander vorbeischreiben.

Ist es denn zwangsläufig notwendig das mit "-cp" zu machen? Sonst findet er die Klasse nicht direkt, oder?
Wenn Du Deine Maths.java anschaust, dann wird dort eine Klasse IntMaths verwendet. Die Klasse muss der Compiler ja finden, also musst Du ihm sagen, wo er danach suchen soll. Deswegen gibt man den Classpath mit -cp an.

Hast Du also ein .jar-File, in dem sich ein .class-File befindet, das zum Kompilieren benötigt wird, teilst Du das dem Compiler mit, indem Du das .jar-File in den Classpath mit aufnimmst.
 

jono

Top Contributor
Wechsele doch mal in das vermutlich richtige Verzeichnis und gib dort einmal
tree /A
und einmal
tree /A /F
ein.
Was sind denn sensible Bezeichner? Habe davon noch nichts gehört. Meinst du mit Verzeichnis den Pfad und an welcher Stelle genau soll ich das Genannte eingeben?
Wenn Du Deine Maths.java anschaust, dann wird dort eine Klasse IntMaths verwendet. Die Klasse muss der Compiler ja finden, also musst Du ihm sagen, wo er danach suchen soll. Deswegen gibt man den Classpath mit -cp an.

Hast Du also ein .jar-File, in dem sich ein .class-File befindet, das zum Kompilieren benötigt wird, teilst Du das dem Compiler mit, indem Du das .jar-File in den Classpath mit aufnimmst
Soll ich das Genannte von @gtagta jetzt eingeben nachdem ich
Java:
 cd..
verwendet habe oder wann genau, kannst du dich da vielleicht auf ein Screen beziehen, damit ich weiß an welcher Stelle genau?
 

thecain

Top Contributor
Willst du nicht mal Kommandozeilen Grundlagen lernen? Du tippst sogar die Befehle falsch ab. /? Gibt dir zu den meisten Befehlen eine Hilfe aus, sonst hilft es zu googeln. Zudem würde ich nie einfach irgendwas aus einem Forum eingeben, von dem du nicht geprüft hast, was es tun sollte.
 

jono

Top Contributor
Willst du nicht mal Kommandozeilen Grundlagen lernen? Du tippst sogar die Befehle falsch ab. /? Gibt dir zu den meisten Befehlen eine Hilfe aus, sonst hilft es zu googeln. Zudem würde ich nie einfach irgendwas aus einem Forum eingeben, von dem du nicht geprüft hast, was es tun sollte.
Habe den Befehl ausversehen falsch abgetippt, ist mir nicht aufgefallen kann ja mal passieren!!! Das forum sagt mir etwas, da sollte normalerweise auch die Info dabei sein, was ein jeweiliger Befehl bedeutet, unabhängig davon, ob ich das prüfen muss !!
Und die Grundlagen kenne ich übrigens, habe es in den Basics gelernt , nur dass ich jetzt die .jar Datei dem classpath hinzufügen muss, das weiß ich auch, das habe ich auch in der IDE gemacht.
@jono, ich habe irgendwie das Gefühl, als ob Informatik nicht so dein Ding wäre. ;)
Das kannst du schlecht behaupten, vermuten kannst du das, aber es ist nicht der Fall. Die sensiblen Bezeichner spielen hier keine Rolle. Die Aussage bringt mich jetzt nicht weiter, da ich damit weitermachen möchte, auch wenn in das in euren Augen anders erscheinen mag.
Neiiiiin. Du sollst nach C:\users\acer\OneDrive\.......\assignmentXX\assignment01\src wechseln (hinten das assignmentXX weglassen).
Auch als @mihe7 das gestern sagte und ich genau das gemacht habe und er meinte ich mache etwas ganz anders ist auch vollkommen überspitzt. Ich habe lediglich diesen Pfad eingegeben was das Gleich ist, wie wenn ich cd.. eingebe und derselbe Pfad dabei erscheint.
1619385620237.png
Manchmal sind eure Aussagen für mich als cmd-Anfänger auch etwas zu unspezifisch, Fehler liegen auch bei mir aber auch nicht nur bei mir!
Wäre sehr nett, wenn mir jemand jetzt weiterhelfen kann, nachdem ich es richtig eingegeben habe. Im Endeffekt muss ich ja jetzt die Klasse kompilieren mit javac, davor muss der Jar-Datei-Pfad dem Classpath hinzugefügt werden, damit der PC weiß, wo er diese zu finden hat. Nachdem ich den cp Befehl ausgeführt habe müsste ich doch die normale Klasse Maths.java kompilieren können und danach mit dem "java" befehl durch die JVM ausführen können?
 

mrBrown

Super-Moderator
Mitarbeiter
Das kannst du schlecht behaupten, vermuten kannst du das, aber es ist nicht der Fall.

Die Vermutung kommt daher, dass du dich seit fast 2 Jahren mit Java beschäftigst, vor einem Jahr schon größere Programme mit Client-Server-Architektur bearbeitet hast, und jetzt an absoluten Einsteigeraufgaben verzweifelst.

Ehrliche Einschätzung von jemandem, der schon zig Studenten betreut hat: Informatik ist nichts für dich. Das ist auch überhaupt nicht abwertend gemeint oder ähnliches, es ist einfach für manche Leute nichts.
Sich das frühzeitig einzugestehen mag schwierig sein, hilft aber und spart am Ende sehr viel Zeit und Frustration.
 

mihe7

Top Contributor
Auch als @mihe7 das gestern sagte und ich genau das gemacht habe und er meinte ich mache etwas ganz anders ist auch vollkommen überspitzt.
Es ist nun einmal etwas völlig anderes, wenn Du statt cd .. im Verzeichnis C:\Users\acer\OneDrive\Dokumente\assignmentXX(...)\assignmentXX\assignment01\src\assignmentXX den (völlig unsinnigen) Befehl cd ..C:\Users\acer\OneDrive\Dokumente\assignmentXX(...)\assignmentXX\assignment01\src\assignmentXX im Verzeichnis C:\Users\acer eintippst. Ich meinte, das in #60 doch erklärt zu haben. Daran ist nun wirklich nichts überspitzt.

Manchmal sind eure Aussagen für mich als cmd-Anfänger auch etwas zu unspezifisch, Fehler liegen auch bei mir aber auch nicht nur bei mir!
Da gebe ich Dir sogar recht. Wenn ich unsere Kunden, die den Rechner als reines Arbeitsgerät (und da teilweise genau ein Programm) verwenden, supporte, dann wüssten die meisten davon auch nicht, was damit gemeint ist. Die würden dann allerdings auch nicht einfach irgendwas wild in die Befehlszeile eintippen. Zu denken gibt mir, dass man anscheinend heute nicht mehr voraussetzen kann, dass angehende Entwickler wenigstens die Grundlagen der Befehlszeile inkl. Dateisystem beherrschen.

Im Endeffekt muss ich ja jetzt die Klasse kompilieren mit javac, davor muss der Jar-Datei-Pfad dem Classpath hinzugefügt werden
Den Befehl habe ich Dir oben in #56 bereits geschrieben (javac -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX\Maths.java) und in #75 eine Erklärung dazu abgegeben.
 
K

kneitzel

Gast
Das forum sagt mir etwas, da sollte normalerweise auch die Info dabei sein, was ein jeweiliger Befehl bedeutet, unabhängig davon, ob ich das prüfen muss !!
Nein, das Forum setzt Grundkenntnisse voraus. Und auch, dass die Person etwas selbständig lernen will und dann ggf. von sich aus nachfragt.

Und wenn Du dabei bist, ein Studium zu absolvieren: Da ist eigenständiges Lernen doch wirklich das wichtigste.

Und den Hinweis zu den Grundlagen der Kommandozeile hast Du schon in #66 bekommen:
Evtl. würde es Sinn machen, sich die Basics einer Kommandozeile anzueignen? Damit klar ist, was die einzelnen Befehle machen.
Da kann man also einmal "Einführung Kommandozeile" in Google suchen und dann wirst Du viele tolle Treffer haben, die Du Dir ansehen kannst.

Generell gilt (Was Dir aber wohl schon von Anfang an gesagt wurde): Du musst die Grundlagen lernen. Hier irgendwie Dir deine Lösung zusammen raten im Forum bringt nichts.

Auf #24 hast Du z.B. mit einem Themenwechsel reagiert. Hast Du den Fehler in Deiner gcd Methode gefunden? Denn der größte gemeinsame Teiler ist nicht 0. (Jetzt könnte man mit Mathematischen Grundlagen kommen - das neutrale Element bei Punkt-Rechnung ist halt 1. Der GCD ist immer mind. 1 Evtl. ist auch einfach der Satz bekannt: "Jede Zahl ist mind. durch sich und durch 1 teilbar."? Auf b==0 dann b zurück geben ist also relativer Unsinn... der zeigt, dass da die Grundlagen nicht verstanden wurden bzw. über Ergebnisse nicht nachgedacht wurde.)
 
K

kneitzel

Gast
Da gebe ich Dir sogar recht. Wenn ich unsere Kunden, die den Rechner als reines Arbeitsgerät (und da teilweise genau ein Programm) verwenden, supporte, dann wüssten die meisten davon auch nicht, was damit gemeint ist. Die würden dann allerdings auch nicht einfach irgendwas wild in die Befehlszeile eintippen. Zu denken gibt mir, dass man anscheinend heute nicht mehr voraussetzen kann, dass angehende Entwickler wenigstens die Grundlagen der Befehlszeile inkl. Dateisystem beherrschen.
Das sind dann aber auch Kunden. Die kriegen auf Wunsch auch Pampers von mir ... incl. Pudern und so (So das vom Vertrag halbwegs abgedeckt ist. Wenn nicht ist die Situation blöd, denn dann ist die Kundenzufriedenheit niedrig aber nur weil die Firma den nicht zahlen will).

Hier geht es um einen Student. Grundlagen nicht zu haben ist nichts schlimmes! Jeder hat man angefangen. Aber dann erarbeitet man sich das!

Ich habe in Dresden studiert und mit mir hat jemand angefangen, der zu DDR Zeiten nicht studieren durfte und daher KFZ Mechaniker gelernt hat. Kam zum Informatik Studium ohne zu wissen, was ein Computer ist (ganz überspitzt ausgedrückt) und wollte dann nach 1-2 Monaten schon aufhören. Und ihm wurde dann (u.a. von mir) gesagt, dass er auch nach einem Jahr erst aufhören könnte und er es doch einfach probieren solle...
Und in den ersten Semestern war er dann Bestandteil von Lerngruppen. Die Grundlagen kann man sich gut erarbeiten! Der erwähnte Student hatte übrigens nach 4 Semestern ein gutes Vordiplom in den Händen....

Daher ist die Frage, die Du (@jono natürlich - @mihe7 muss ich diese Frage nicht stellen - den habe ich oben nur zitiert) Dir stellen MUSST:
Bist Du bereit Dir auch die Grundlagen zu erarbeiten? Dann fang an und lern zu lernen!
Wenn Du dazu nicht bereit bist, dann lass es! Ich stelle mir nur den neuen Kollegen vor, der ein Bachelor Informatik hat und dann keinerlei Grundlagen beherrscht. Was für einen Stand wird er haben? Ich denke, dass du falsch liegst, wenn Du annimmst, dass man sich dann mit dem Kollegen hinsetzt und ihm die Kommandozeile erklärt ... Diese Basics werden vorausgesetzt. Und wenn die Erwartungen in der Probezeit nicht erfüllt werden, dann sind Konsequenzen doch auch klar hoffe ich mal!

Daher ist dies ein Weckruf für Dich @jono!! Du kannst das bestimmt auch durchziehen. Du würdest sogar Hilfe kriegen hier! Nur zeig, dass Du so Hinweise zu Grundlagen auch aufnimmst und Dir diese Grundlagen dann erarbeitest! (Und die Grundlagen können kein Problem sein. Du hast ja auch das Abitur geschafft! Und wenn Du es alleine nicht schaffst: Dann schau gezielt nach Nachhilfe. Und da ggf. als erstes das "Lernen zu lernen" - damit da dann jemand mit Dir erarbeitet, wie Du Dir selbst neue Themen erarbeiten kannst.)
 

M.L.

Top Contributor
(..)Informatik...nicht Dein Ding(..) aber es ist nicht der Fall
Kurzgefasst reagiert ein elektronisches Gerät auf eine mehr oder wenige grosse Menge an "Strom an" / "Strom aus"-Befehlen. Die Existenz einer analogen Welt und die Auswirkungen dieses (Nicht-)Handelns sind dem Gerät dabei ziemlich egal.
In der Informatik studiert man eher menschliche Verhaltensweisen, die (aktuell) als beste (oder annehmbar(st)e) -zwecks Problemlösung- anerkannt worden sind. Einige Verhaltensweisen (z.B. Datenstrukturen, Algorithmen) veralten nicht ganz so schnell, bei anderen (Architekturen, Software-Versionierung, GUI-Frontend-Technologien,...) liegt die Änderungsrate -und damit auch implizit der Lernaufwand und die Aktualierung desselben- erheblich höher (das ist in anderen Disziplinen, z.B. Jura, Medizin,... aber genauso)
 

mihe7

Top Contributor
java richtig aufrufen:

Code:
java -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX.Maths
 

jono

Top Contributor
Okay, danke hat jetzt geklappt, nun weiß ich das auch für die Zukunft!
Nun hätte ich da noch eine Frage, wenn ich jetzt eine JUnit-Klasse ausführen möchte, muss ja:
import static org.junit.Assert.assertEquals;
berücksichtigen..
 
K

kneitzel

Gast
Es ändert sich am Prinzip nichts! Du musst Libraries, die du benötigst, im Classpath mit angeben.
Und dann musst Du die richtige main Methode aufrufen. Ds ist bei einem Unit Test natürlich nicht mehr deine main Methode.

Also wirklich nichts anderes als die erwähnten Grundlagen anwenden. Also bitte: erarbeite dir die Grundlagen!
Zeige uns wenigstens, dass Du verstanden hast, was Du da treibst - #88 lässt mich daran zweifeln.

Ansonsten bezüglich Ausführung von Unit Tests:

Aber der Schritt dürfte hoffentlich für dein Studium so nicht relevant sein, so dass Du nun zu einer IDE greifen darfst, oder?
 

jono

Top Contributor
Zeige uns wenigstens, dass Du verstanden hast, was Du da treibst - #88 lässt mich daran zweifeln.
Ja verständlich. Aber Ich wusste einfach nicht, dass man dem classpath sozusagen wieder die jar datei hinzufügen muss, weil man das in der IDE ja auch nur einmal macht.
Aber der Schritt dürfte hoffentlich für dein Studium so nicht relevant sein, so dass Du nun zu einer IDE greifen darfst, oder?
Muss tatsächlich die JUnit-Klasse auch mit der cmd ausführen
 

jono

Top Contributor
Gibt es zur JUnit-Bibliothek einen Pfad im Explorer? Es ist ja auch eine jar-Datei...
Ich habe jetzt auf stackoverflow: -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name] gefunden als "allgemeingültige" Kommandozeile. Nun frage ich mich jetzt wie ich auf den Pfad stoße. Bzw. hast du evtl. den Link wo man diese herunterladen kann? Finde ihn nicht.
"Die einzubindende Bibliothek muss zunächst heruntergeladen und in einem beliebigen Verzeichnis abgespeichert werden."
Deshalb schaue ich gerade, wo ich das am besten downloaden kann.
 
Zuletzt bearbeitet:

jono

Top Contributor
Auf #24 hast Du z.B. mit einem Themenwechsel reagiert. Hast Du den Fehler in Deiner gcd Methode gefunden? Denn der größte gemeinsame Teiler ist nicht 0. (Jetzt könnte man mit Mathematischen Grundlagen kommen - das neutrale Element bei Punkt-Rechnung ist halt 1. Der GCD ist immer mind. 1 Evtl. ist auch einfach der Satz bekannt: "Jede Zahl ist mind. durch sich und durch 1 teilbar."? Auf b==0 dann b zurück geben ist also relativer Unsinn... der zeigt, dass da die Grundlagen nicht verstanden wurden bzw. über Ergebnisse nicht nachgedacht wurde.)
Es muss a zurück gegeben werden, es macht ja nämlich überhaupt keinen Sinn b== 0 zurückzugeben weil dann 0 ausgegeben wird
 
K

kneitzel

Gast
Muss tatsächlich die JUnit-Klasse auch mit der cmd ausführen
Ach je, aber das ist in der Dokumentation natürlich hinterlegt.
Gibt es zur JUnit-Bibliothek einen Pfad im Explorer? Es ist ja auch eine jar-Datei...
Ja natürlich. Die musst Du so wie jede Abhängigkeit hinterlegen. Und zum Übersetzen der Test-Sourcen brauchst Du dann im Classpath:
- Alle Abhängigkeiten deines Hauptcodes
- Die .class Dateien des Hauptcodes.
- Alle Libraries für die Tests (Also mnd. die JUnit jar)

Dann hast Du die java Datei direkt ausgeführt (Also direkt java aufgerufen). Das geht mit neueren JDKs aber ich würde doch dazu raten, das zu trennen:
- javac nur zum übersetzen
- java zum aufrufen

Das dürfte für die Ausführung des Tests wichtig sein, denn ich meine, dass der console launcher keine Übersetzungen macht sondern statt dessen die übersetzen Klassen im Classpath haben will.

Es muss a zurück gegeben werden, es macht ja nämlich überhaupt keinen Sinn b== 0 zurückzugeben weil dann 0 ausgegeben wird
👍
 

jono

Top Contributor
Und zum Übersetzen der Test-Sourcen brauchst Du dann im Classpath:
- Alle Abhängigkeiten deines Hauptcodes
- Die .class Dateien des Hauptcodes.
- Alle Libraries für die Tests (Also mnd. die JUnit jar)
Was genau ist mit den Abhängigkeiten des Hauptcodes gemeint? Damit ist doch:
javac -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX\Maths.java gemeint, oder?
Darin wäre dann ja auch die .class Datei des Hauptcodes auch drin enthalten? Und an welcher Stelle in der Zeile muss ich dann die JUnit jar jetzt eingeben? Finde das gerade etwas komplex...
 
K

kneitzel

Gast
In dem Fall wäre es das jarfile.jar das benötigt wird.

Dieses javac übersetzt die Maths.java und erstellt daraus class Dateien.
Die class Dateien enthalten aber die Abhängigkeiten nicht.
 

jono

Top Contributor
Also ich weiß gerade echt nicht weiter... Das, was jetzt anliegt hat ja eher mit eigener Überlegung zu tun, ich weiß jetzt zwar, wie ich das .jar File einbinde. javac und java sind auch klar bzw. deren jeweilige Aufgabe.
Das Prinzip, bzw. der Ablauf, an dem ich mich orientiere ist der hier:
1619449736702.png
Meine genauen Probleme:
1. Wo finde ich die JUnit-Bibliothek?
2. Mal angefangen bei: Ich gehe zuerst ins Verzeichnis bzw. in den Pfad der normalen Klassen, wie schon bei der Klasse Maths aufgeführt.
Dann: javac -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX\Maths.java
3. Wie geht es jetzt weiter, wo kann ich den den JUnit-Pfad jetzt anfügen? Ich will ja jetzt im Prinzip es so machen wie hier: javac -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX\Maths.java, also den JUnit Pfad dem cp hinzufügen. Nun muss ich das wahrscheinlich alles zusammen hinter javac irgendwie packen, oder? also sprich: javac -cp -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX\JUnit.java ... ... ...
Wie geht es da jetzt weiter, da werde ich im Internet jetzt auch nicht besonders fündig, weil ich ja jetzt alles "zusammenfügen" muss in einer Zeile. Ich muss das sowieso schon vorhanden .jar-File dem cp hinzufügen und die .jar-File der JUnit-Bibl. ebenfalls.
In dem Fall wäre es das jarfile.jar das benötigt wird.

Dieses javac übersetzt die Maths.java und erstellt daraus class Dateien.
Die class Dateien enthalten aber die Abhängigkeiten nicht.
Das hier hat mir jetzt wirklich nicht geholfen. Ich verstehe jetzt die Grundlagen, nur weiß ich jetzt nicht wie ich das alles konkret in der cmd zusammenschreiben soll. Es hakt daran, dass ich jetzt 2 statt einer .jar-Datei eingeben muss. Dann will ich ja die JUnit.java laden dafür muss ich aber noch die Abhängigkeit mit der Maths.java irgendwie reinpacken, ist mir gerade echt ein Rätsel...
 
K

kneitzel

Gast
Dein classpath enthält ja schon mehrere Einträge, die mit ";" getrennt sind:
Die jar Datei und das aktuelle Verzeichnis („.“). Da siehst du also schon, wie du mehrere Elemente aneinander hängen kannst.

Und so kannst du also noch ein Jar-File zusätzlich angeben (mit ; getrennt).

Ansonsten einfach mal ein Link: https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

Und bezüglich "Wo ist die jar Datei": Da, wo Du sie hin kopiert hast. Wenn Du sie noch nicht hast, dann kannst Du diese herunter laden...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ruutaiokwu JRE-/JDK-unabhängige PBKDF2WithHmacSHA512-Implementierung Java Basics - Anfänger-Themen 16
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
J Implementierung von Observer und Singleton-Pattern Java Basics - Anfänger-Themen 9
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
G Projekt architektur (implementierung) Java Basics - Anfänger-Themen 3
M Implementierung einer getNextId Methode Java Basics - Anfänger-Themen 5
J Implementierung Listen-ADT Java Basics - Anfänger-Themen 131
J Implementierung eines Zustandsdiagramms Java Basics - Anfänger-Themen 19
I GenericQueue / Implementierung als Ringspeicher Java Basics - Anfänger-Themen 4
MiMa Log4j2 implementierung Java Basics - Anfänger-Themen 4
S Interface Interface und seine Implementierung Java Basics - Anfänger-Themen 5
G Array implementierung Java Basics - Anfänger-Themen 23
J ANTLR Installierung und Implementierung Java Basics - Anfänger-Themen 2
E Hilfe bei Implementierung von Methoden Java Basics - Anfänger-Themen 10
S SkipList Implementierung Java Basics - Anfänger-Themen 1
J Methoden Suche effiziente Implementierung für eine Methode Java Basics - Anfänger-Themen 3
J Interface Probleme bei der Implementierung Java Basics - Anfänger-Themen 1
E hashCode implementierung Java Basics - Anfänger-Themen 9
S Implementierung der Klasse Konto und Nutzung bereits vorhandener Klassen Java Basics - Anfänger-Themen 7
H Implementierung eines Interfaces erweitern Java Basics - Anfänger-Themen 13
O Generics - Implementierung Java Basics - Anfänger-Themen 7
A Hilfestellung zur Implementierung des Gaußsches Eliminationsverfahren Java Basics - Anfänger-Themen 4
B OOP Implementierung eines Heaps Java Basics - Anfänger-Themen 13
K Bucketsort Implementierung Java Basics - Anfänger-Themen 0
K Mergesort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
K Quicksort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
S Klassen Klassendiagramm Implementierung? Java Basics - Anfänger-Themen 5
J Bucketsort Implementierung Java Basics - Anfänger-Themen 0
C Stack - listenbasierte Implementierung Java Basics - Anfänger-Themen 4
N Was bedeutet "Implementierung vor dem Client verbergen" bei Design Patterns? Java Basics - Anfänger-Themen 2
T Collections LinkedList<LinkedList<T>> - Implementierung Java Basics - Anfänger-Themen 10
F Implementierung von Interfaces -> Problem mit main Java Basics - Anfänger-Themen 12
D Resourcebundle implementierung Java Basics - Anfänger-Themen 2
M Implementierung des Knuth-Morris-Pratt-Algorithmus Java Basics - Anfänger-Themen 0
Q Implementierung von Listenern Java Basics - Anfänger-Themen 4
B Klassen Hilfe bei Implementierung Java Basics - Anfänger-Themen 5
N Compiler-Fehler Comparable / compareTo implementierung Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
I Erste Schritte Implementierung der API Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
M falsche implementierung von currentTimeMillis() ? Java Basics - Anfänger-Themen 14
G Implementierung eines Kontos Java Basics - Anfänger-Themen 11
M Quicksort implementierung Java Basics - Anfänger-Themen 23
SexyPenny90 Implementierung einer doubly linked list Java Basics - Anfänger-Themen 5
N Binärbaum/Implementierung Java Basics - Anfänger-Themen 9
U Doppelte Interfcae Implementierung Java Basics - Anfänger-Themen 10
K Kleiner Fehler bei Methoden Implementierung Java Basics - Anfänger-Themen 6
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
S OOP Implementierung Komposition, Aggregation, Assoziation und Generalisierung Java Basics - Anfänger-Themen 2
C Klassenhirarchien zur Implementierung von Fahrzegen Java Basics - Anfänger-Themen 26
BinaryLogic Datentypen Statistik Interface - untersch. Implementierung Java Basics - Anfänger-Themen 5
E Performante Implementierung eines "Hintergrundprogramms" Java Basics - Anfänger-Themen 10
S Saubere Implementierung Java Basics - Anfänger-Themen 2
K Dijkstra implementierung 2.0 Java Basics - Anfänger-Themen 19
K dijskral implementierung Java Basics - Anfänger-Themen 14
U Probleme mit Server-Client implementierung Java Basics - Anfänger-Themen 5
K Game of Life Implementierung Java Basics - Anfänger-Themen 30
B OOP Problem bei Implementierung von Interface Java Basics - Anfänger-Themen 6
J HashSet Implementierung Java Basics - Anfänger-Themen 16
R NullPointerException in Queue-Implementierung Java Basics - Anfänger-Themen 11
X Frage zur Implementierung von equals() Java Basics - Anfänger-Themen 2
B Effektive Implementierung für Darstellung großer Datenmengen in Jogl Java Basics - Anfänger-Themen 5
D Datentypen Implementierung eines Binärbaumes Java Basics - Anfänger-Themen 7
B Implementierung Java Basics - Anfänger-Themen 2
N Implementierung Tic tac toc Java Basics - Anfänger-Themen 25
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
Y Implementierung einer Potenzturm Funktion Java Basics - Anfänger-Themen 4
S Implementierung gegen Interfaces / List, ArrayList, LinkedList Java Basics - Anfänger-Themen 11
J Quicksort Implementierung-- Exception ArrayOutOfBounds Java Basics - Anfänger-Themen 6
U Implementierung Constructor Java Basics - Anfänger-Themen 7
T Problem mit Implementierung von einer HashMap aufgabe Java Basics - Anfänger-Themen 2
G Implementierung des Observer/Observable Patterns - Gut so? Java Basics - Anfänger-Themen 3
I Zugriff auf Implementierung verhindern Java Basics - Anfänger-Themen 8
D Implementierung nach MVC Java Basics - Anfänger-Themen 6
B Theoretische Frage zum Programmbau (nun zur Implementierung) Java Basics - Anfänger-Themen 8
H Implementierung von Interfaces Java Basics - Anfänger-Themen 4
G Implementierung von Bäumen Java Basics - Anfänger-Themen 2
N Probleme mit paint() bei Implementierung in ein Panel Java Basics - Anfänger-Themen 4
B Wie funktioniert die implementierung von c code in Java? Java Basics - Anfänger-Themen 7
A Middle Square Java Basics - Anfänger-Themen 5
B Algorithmus Square und Multiply Java Basics - Anfänger-Themen 3
V Magic square Java Basics - Anfänger-Themen 0
O Mid-Square-Methode Java Basics - Anfänger-Themen 20
D Magic Square Java Basics - Anfänger-Themen 10
G Magic Square Java Basics - Anfänger-Themen 26

Ähnliche Java Themen

Neue Themen


Oben