Ja, okay wusste nicht, was du mit zu tief meintest hätte ja auch einfach mal nachfragen können ^^Neiiiiin. Du sollst nach C:\users\acer\OneDrive\.......\assignmentXX\assignment01\src wechseln (hinten das assignmentXX weglassen).
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);
}
}
Habs ausprobiert, weiß wie es funktioniert.nur cd ..
Du hast irgendwas gemacht, aber nicht das, was ich geschrieben hatteHabs im Screen aber anders gemacht also direkt so wie mihe es gesagt hat.
Wir kommen der Sache langsam näher. Übersetz mal mitDas Problem ist das Projekt beinhaltet zwei Packages mit ihren jeweiligen Namen. Also eher die Frage, ob es ein Problem ist?
javac -cp . assignmentXX\Maths.java
.javac -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX\Maths.java
verwenden.Leerzeichen sind da auf jeden Fall keine. Was ist mit der Frage gemeint, wo ist ("und")?Aber der Pfad sieht dubios aus - So wie ich das sehe, sind da Leerzeichen im Pfad. Und ist das Verzeichnis wirklich mit "(" und ")"?
Also ich weiß gerade nicht welche Reihenfolge ich jetzt noch befolgen soll^^ Wenn ich das jar mit angeben soll: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.
Doch ich habe doch genau das gemacht? Frage: Was davon habe ich nicht gemacht? Das würde mir helfen.Du hast irgendwas gemacht, aber nicht das, was ich geschrieben hatte![]()
Wann muss ich das jetzt verwenden? Soll ich nicht mehr mit cd in die Pfade gehen? In welcher Reihenfolge jetzt ?javac -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX\Maths.java
verwenden
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.Doch ich habe doch genau das gemacht? Frage: Was davon habe ich nicht gemacht? Das würde mir helfen.
Äh, so lange Du das Verzeichnis nicht wechselst, stehst Du doch immer noch im richtigen. Oder fängst Du jedesmal von vorne an?!?Wann muss ich das jetzt verwenden? Soll ich nicht mehr mit cd in die Pfade gehen? In welcher Reihenfolge jetzt ?![]()
Weil seine Aufgabe lautet, es über CLI zu machen.Warum nimmt er keine IDE?
Die Wege des Herrn sind unergründlich...Warum dann so bescheuerte Pfade, warum OneDrive und warum keine " "-Zeichen?
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.
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.javac -cp . assignmentXX\Maths.java
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 nichtWarum dann so bescheuerte Pfade, warum OneDrive und warum keine " "-Zeichen?
Ja ich weiß, da steht nur normaler Text anstelle dessen.Und ich war schlicht verwirrt, weil du Dinge schwärzt und durch (...) ersetzt und so ...
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 rauszukommenUnd ggf. als Idee: man könnte den Aufruf unabhängig vom Arbeitsverzeichnis machen und alles per Drag & Drop machen?
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Übersetz mal mitjavac -cp . assignmentXX\Maths.java
.
Genau, so war das gemeint@mihe7 Also erstmal so.
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.Und wann soll ich das anwenden bzw. das analoge dazu mit der .jar?
Kompilieren. javac ist der Java-Compiler, der Quelldateien (.java) in Classfiles (.class) übersetzt.Was ist denn hier genau jetzt mit übersetzen gemeint?
Wie jetzt ?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.
Ja das weiß ich ja. Ist es denn zwangsläufig notwendig das mit "-cp" zu machen? Sonst findet er die Klasse nicht direkt, oder?Kompilieren. javac ist der Java-Compiler, der Quelldateien (.java) in Classfiles (.class) übersetzt.
Mach mal das, was @gtagta geschrieben hat, damit wir hier nicht aneinander vorbeischreiben.Also es gibt ja zwei Packages in dem Projekt, einmal in der die jar liegt und einmal in der die auszuführende Klasse liegt.
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.Ist es denn zwangsläufig notwendig das mit "-cp" zu machen? Sonst findet er die Klasse nicht direkt, oder?
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?Wechsele doch mal in das vermutlich richtige Verzeichnis und gib dort einmal
tree /A
und einmal
tree /A /F
ein.
Soll ich das Genannte von @gtagta jetzt eingeben nachdem ichWenn 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
cd..
Damit sind Teile in deinen Screenshots gemeint, die du uns vielleicht nicht zeigen möchtest (sog. "geschwärzte Stellen"), weil sie deinen Klarnamen enthalten o. ä.Was sind denn sensible Bezeichner? Habe davon noch nichts gehört.
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 !!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.
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.@jono, ich habe irgendwie das Gefühl, als ob Informatik nicht so dein Ding wäre.![]()
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.Neiiiiin. Du sollst nach C:\users\acer\OneDrive\.......\assignmentXX\assignment01\src wechseln (hinten das assignmentXX weglassen).
Das kannst du schlecht behaupten, vermuten kannst du das, aber es ist nicht der Fall.
Es ist nun einmal etwas völlig anderes, wenn Du stattAuch als @mihe7 das gestern sagte und ich genau das gemacht habe und er meinte ich mache etwas ganz anders ist auch vollkommen überspitzt.
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.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.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!
Den Befehl habe ich Dir oben in #56 bereits geschrieben (Im Endeffekt muss ich ja jetzt die Klasse kompilieren mit javac, davor muss der Jar-Datei-Pfad dem Classpath hinzugefügt werden
javac -cp pfad\zum\jar-file\jarfile.jar;. assignmentXX\Maths.java
) und in #75 eine Erklärung dazu abgegeben.Nein, das Forum setzt Grundkenntnisse voraus. Und auch, dass die Person etwas selbständig lernen will und dann ggf. von sich aus nachfragt.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 !!
Da kann man also einmal "Einführung Kommandozeile" in Google suchen und dann wirst Du viele tolle Treffer haben, die Du Dir ansehen kannst.Evtl. würde es Sinn machen, sich die Basics einer Kommandozeile anzueignen? Damit klar ist, was die einzelnen Befehle machen.
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).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.
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.(..)Informatik...nicht Dein Ding(..) aber es ist nicht der Fall
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.Zeige uns wenigstens, dass Du verstanden hast, was Du da treibst - #88 lässt mich daran zweifeln.
Muss tatsächlich die JUnit-Klasse auch mit der cmd ausführenAber der Schritt dürfte hoffentlich für dein Studium so nicht relevant sein, so dass Du nun zu einer IDE greifen darfst, oder?
Es muss a zurück gegeben werden, es macht ja nämlich überhaupt keinen Sinn b== 0 zurückzugeben weil dann 0 ausgegeben wirdAuf #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.)
Ach je, aber das ist in der Dokumentation natürlich hinterlegt.Muss tatsächlich die JUnit-Klasse auch mit der cmd ausführen
Ja natürlich. Die musst Du so wie jede Abhängigkeit hinterlegen. Und zum Übersetzen der Test-Sourcen brauchst Du dann im Classpath:Gibt es zur JUnit-Bibliothek einen Pfad im Explorer? Es ist ja auch eine jar-Datei...
👍Es muss a zurück gegeben werden, es macht ja nämlich überhaupt keinen Sinn b== 0 zurückzugeben weil dann 0 ausgegeben wird
Was genau ist mit den Abhängigkeiten des Hauptcodes gemeint? Damit ist doch: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)
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...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.