IntelliJ: Wie lade ich ein fertiges Programm aus dem Lehrbuch?

nbergmann

Aktives Mitglied
Ich habe mir sagen lassen, dass IntelliJ immer mit Projekten arbeitet und man daher nicht einfach ein fertiges Programm laden und starten kann.
Wie aber lade ich ein fertiges Programm aus meinem Lehrbuch, so dass ich es mit RUN starten kann?
 
IntelliJ IDEA kann schon sehr gut die Struktur eines Projektes automatisch erkennen. Dazu braucht es nicht vorher ein IntelliJ IDEA Projekt gewesen zu sein mit einer .iml Datei oder einem .idea/ Ordner. Versuche einfach mal, den Ordner, der die Quellcode-Dateien deines "Programms" beinhaltet, mit IntelliJ IDEA einfach zu öffnen (also File -> Open).
Also, wenn die Struktur deines "fertigen Programms" so aussieht:
Code:
/programm
|-src/
`-|-Main.java
dann öffne mal den Ordner "programm" in IntelliJ IDEA.

IntelliJ IDEA kann allerdings keine Programme aus "Büchern" laden. Du müsstest das Programm schon von dem Buch "abschreiben" und auf deinem lokalen Dateisystem speichern.
 
IntelliJ IDEA kann schon sehr gut die Struktur eines Projektes automatisch erkennen. Dazu braucht es nicht vorher ein IntelliJ IDEA Projekt gewesen zu sein mit einer .iml Datei oder einem .idea/ Ordner. Versuche einfach mal, den Ordner, der die Quellcode-Dateien deines "Programms" beinhaltet, mit IntelliJ IDEA einfach zu öffnen (also File -> Open).
Also, wenn die Struktur deines "fertigen Programms" so aussieht:
Code:
/programm
|-src/
`-|-Main.java
dann öffne mal den Ordner "programm" in IntelliJ IDEA.

IntelliJ IDEA kann allerdings keine Programme aus "Büchern" laden. Du müsstest das Programm schon von dem Buch "abschreiben" und auf deinem lokalen Dateisystem speichern.
Wenn ich das mache, z.B. mit einem simplen "HalloNorbert"-Programm, dass nur eine Zeile ausgibt, und ich starte RUN, auf welche Art auch immer, spielt der immer das vorletzte Programm ab, obwohl "HalloNorbert" geladen ist und im Editor-Fenster angezeigt wird.
 
Ctrl+Shift+F10 oder rechtsclick im Editorfenster des Quellcodes des "Programmes", welches du starten möchtest, und im erscheinenden Kontextmenü "Run Klassenname.main()" anklicken oder den kleinen grünen Pfeil neben der main() Methode in der Outline vom Editor anklicken.
 
Ctrl+Shift+F10 und Rechtsklick im Editorfenster verursachen diese Fehlermeldung:
"Error: Could not find or load main class HalloRubina
Caused by: java.lang.ClassNotFoundException: HalloRubina"
Es gibr keinen kleinen grünen Pfeil neben der Main-Methode! Ich kenne den wohl und weiß, das der bei selbst erstellten Programmen da immer ist.

Ich bin in meinem Lehrbuch schon auf Seite 200 und wollte von Eclipse zu IntelliJ wechseln.
Aber wenn ich das nicht hinkriege, muss ich das aufgeben.
 
Ich weiß nicht, was du mit "selbst erstelltem Programm" genau meinst, bzw. warum die Unterscheidung zu einem Buch hier wichtig ist.
Es ist doch völlig egal, woher das Programm bzw. der Quellcode (also die .java Dateien) nun kommen.
Ob von einem Buch abgeschrieben oder von einem YouTube Video abgetippt oder whatever...
Ich verstehe nicht, warum du da diese Unterscheidung machst bzw. überhaupt hervorhebst, dass das Programm von einem Buch kommt.
Was ist jetzt so speziell an einem Programm von einem Buch?

Um zu verstehen, wie dein Setup genau aussieht und was du gerade genau hast bzw. genau versuchst zu tun, müsstest du glaube ich schon viel mehr Details nennen.

Z.B.: Wie sieht exakt das Dateisystem unterhalb des Programmordners aktuell aus? Wo liegen welche Dateien? Wo sind die .java Dateien? Wie sehen die genau aus? Gibt es .class Dateien irgendwo? Hast du überhaupt ein JDK installiert (was man mit Eclipse nicht zwingend braucht)?
 
Ich wollte nur betonen, dass das Programm, das ich laden will, funktioniert.
Deswegen habe ich mich auf das einfachste beschränkt: Die Wiedergabe von zwei Worten. Wie bei "HelloWorld.java".
Ich habe JDK installiert.
Die Datei "HalloRubina.java" liegt im Verzeichnis C:\Java\Programme.
Dazu werden keine .class-Dateien oder sonstige Unterprogramme benötigt.
Hier ist der Code:
public class HalloRubina {
public static void main(String[] args) {
System.out.println("Hallo Rubina!";
}
}
Das Dateisystem unterhalb des Programmordners:
Unter C:\Java\Programme steht nur ein Programm, eben HalloRubina.java und ansonsten nur Unterverzeichnisse.
Jetzt habe ich nur noch eine Frage von dir nicht beantwortet: "Wo liegen welche Dateien?"
Die ist aber auch schwer zu beantworten.
Aber ich danke dir für deine Geduld und will dich nicht ärgern.
 
Kannst du uns ggf. sagen, welches Buch du gerade bearbeitest? (Oder habe ich das übersehen?) Dann können wir die Sourcen auch mal herunter laden und schauen, wie es strukturiert ist.

Wenn es mit Eclipse direkt geht, dann müssten da eigentlich auch Eclipse Projektdateien sein und diese kann IntelliJ auch erkennen und auswerten.

Dazu hatte ich Dir auch schon einmal ein Screenshot gesendet meine ich, wie dies im Öffnen Dialog von IntelliJ dargestellt wird.
 
Kannst du uns ggf. sagen, welches Buch du gerade bearbeitest? (Oder habe ich das übersehen?) Dann können wir die Sourcen auch mal herunter laden und schauen, wie es strukturiert ist.

Wenn es mit Eclipse direkt geht, dann müssten da eigentlich auch Eclipse Projektdateien sein und diese kann IntelliJ auch erkennen und auswerten.

Dazu hatte ich Dir auch schon einmal ein Screenshot gesendet meine ich, wie dies im Öffnen Dialog von IntelliJ dargestellt wird.
Guten Morgen Konrad!
Wegen ähnlichen Problemen wollte ich von Eclipse zu IntelliJ wechseln.
Diese konnte damals hier auch keiner lösen.
Nichts destotrotz:
Das unten stehende Programm Variablen1 läuft in Eclipse, aber nicht in IntelliJ.
Das Buch: Hans-Peter Habelitz - Programmieren lernen mit Java
Das habe ich bis S. 200 durchgearbeitet.
Dann haben mich die Ladeprobleme sowohl in Eclipse als auch in IntelliJ ausgebremst.

Ich habe in Eclipse Variablen1.java umbenannt, auch in der Kopfzeile, den Programmteil durch "System.out.println ("Hallo Friedi!"); " ersetzt und abgespeichert.
Bei RUN kommt die Fehlermeldung: "Editor does not contain a main type."
Das ist für mich nicht mehr logisch.

Java ist schon schwer genug. Aber diese Schwierigkeiten geben mir den Rest.

Vielleicht liegen die Ursachen außerhalb der Programme, in meinem Windows 7-Computer, ausgelöst durch unbeabsichtigte Fehleingaben.

Ich danke euch für eure Bemühungen, will euch aber auch nicht ewig damit auf die Nerven gehen.




Java:
/* Programm zum Testen der Verwendung von Variablen
 * @date 2019-08-04
 * @author Hans-Peter Habelitz
 */

public class Variablen1 {
    public static void main(String[] args) {

    // Deklarationen und Initialisierungen
    byte bZahl = 28;
    short sZahl = -18453;
    int iZahl = 4356576;
    long lZahl = 345236577970L;
    float fZahl = 4.37456678f;
    double dZahl = 3645.564782;
    boolean bestanden = true;
    char zeichen = '%';

    // Ausgabe der Variablenwerte
    System.out.print("bZahl=");
    System.out.println(bZahl);
    System.out.print("sZahl=");
    System.out.println(sZahl);
    System.out.print("iZahl=");
    System.out.println(iZahl);
    System.out.print("lZahl=");
    System.out.println(lZahl);
    System.out.print("fZahl=");
    System.out.println(fZahl);
    System.out.print("dZahl=");
    System.out.println(dZahl);
    System.out.print("bestanden=");
    System.out.println(bestanden);
    System.out.print("zeichen=");
    System.out.println(zeichen);
    }

}
Kannst du uns ggf. sagen, welches Buch du gerade bearbeitest? (Oder habe ich das übersehen?) Dann können wir die Sourcen auch mal herunter laden und schauen, wie es strukturiert ist.

Wenn es mit Eclipse direkt geht, dann müssten da eigentlich auch Eclipse Projektdateien sein und diese kann IntelliJ auch erkennen und auswerten.

Dazu hatte ich Dir auch schon einmal ein Screenshot gesendet meine ich, wie dies im Öffnen Dialog von IntelliJ dargestellt wird.
 
Also, folgendes: Wenn ich einfach nur den von dir geposteten Code-Schnipsel nehme, einen Ordner ./projects/hallo anlege, darin dann den Code-Schnipsel als einzelne Variablen1.java Datei (mit exakt dem Namen Variablen1.java!) anlege, dann einfach IntelliJ IDEA öffne, dann in IntelliJ IDEA im Menü "File" -> "Open" anklicke und den Ordner ./projects/hallo auswähle und dann nur noch sage, dass ich bitte ein Java JDK/SDK haben möchte (da kommt eine Aufforderung im Editor der .java Datei oben), dann funktioniert alles wunderbar.
Beschreibe doch mal ganz genau und jeden einzelnen Click und jede einzelne Tastatureingabe was du gemacht hast. Das ist doch nicht zu fassen hier.
 
Du verwendest hier ja schon eine Maven Projektstruktur. Also packe die Datei Variablen1.java mal irgendwo unterhalb des src/ Ordners (bzw. unter src/main/java - nach Maven Konvention).
"src" steht hier für "source" oder "sources", also zu Deutsch: "Quelltext/-dateien"
 
Testweise funktioniert es auch mit Maven (evtl. mit manuellem Eintrag in der "Run Configuration" als "Application" und Eintrag der "Main Class"):

HalloNorbert_Maven.png
 

Anhänge

  • HalloNorbert_Application.png
    HalloNorbert_Application.png
    20,7 KB · Aufrufe: 0
Ok, ich habe mir jetzt auch einmal die Materialien von dem Buch herunter geladen (https://www.rheinwerk-verlag.de/programmieren-lernen-mit-java/) und angesehen:

In dem ZIP ist ein ZIP Quellcode - da ist tatsächlich absolut keine Projektstruktur enthalten. Das ist etwas sehr ärgerlich.

Folgende Wege sehe ich:

a) Du baust Dir einfach ein neues Projekt und immer wenn Du in einem Kapitel bist, schiebst Du die Dateien des Kapitels in den src bzw src/main/java Ordner (Ja nach Projektstruktur. Du erkennst den richtigen Ordner in IntelliJ daran, dass dieser blau eingefärbt ist!)

Das dürfte recht gut funktionieren - zumindest beim schnellen durchgehen habe ich nur *.java Dateien gesehen (Je nach Projekt gehören andere Dateien ggf. in einen anderen Ordner - src/main/resources wäre da ein möglicher Ordner.)

b) Du verschiebst alle Dateien in den Ordner src/main/java (bzw. src) - das bringt aber leider ein paar Probleme mit sich;
b.1) die Unterordner werden alle zu sogenannten "packages". Damit fehlt da eine erste Zeile "package Kapitel1;" oder so.
Hier müsste man also die Dateien der Reihe durchgehen und diese Zeile einfügen bzw. einfügen lassen. IntelliJ sieht das auch und bietet da einen Fix an mit ALT Enter.
b.2) Es gibt doppelte Klassen (z.B. Kreisberechnung4JOptionPane) - In einem Projekt müssen alle Klassen eindeutig sein. Durch den Fix b.1 wird dies aber mit behoben - aber Du musst zumindest diese Problemfälle beheben.
b.3) Encoding - Die Dateien sind nicht UTF-8 kodiert sondern vermutlich CP-1252 (oder was das Windows Encoding ist). Das merkt IntelliJ auch und meckert das dann an - so in der Datei Umlaute verwendet wurden wie "Fläche" oder so. Aber das kann man ggf. sogar einfach ignorieren und hat dann halt kein "ä"

Bei den Arbeitsumgebungen gibt es in den JavaUebungxx Verzeichnissen .classpath und .project, aber da kommt beim Öffnen nicht zwingend etwas sinnvolles raus. Aber evtl. lag es auch daran, dass da noch ein weiteres ZIP war, das ich ggf. hätte entpacken müssen? Ob das mit Eclipse besser geht als mit IntelliJ? Ich würde generell sagen, dass ich da bei einem Buch die Materialien eher anders gewohnt bin und diese auch anders aufbereiten würde. Aber das ist erst einmal egal. Die Kapitel solltest Du mit den Hinweisen oben zumindest erst einmal durcharbeiten können.

Falls Du ein Projekt nimmst mit Java 9 oder neuer: Achte ggf. darauf, dass Du keine module-info.java Datei hast in Deinem Projekt. Wenn, dann kannst Du diese löschen oder umbenennen (Sonst hast Du ggf. Probleme, dass Du erst herausfinden musst, was für Module Du ggf. noch dort einbinden musst.

Das wäre da erst einmal so meine Sicht auf diese Problematik - vielleicht hilft es Dir ja. Und falls Du mit den Schritten bei b Probleme hast: Die kann man Dir ggf. auch einmal aufbereiten und dir dann zukommen lassen. (Wegen Copyright aber dann nur direkt ohne Veröffentlichung im Forum).
 
Du verwendest hier ja schon eine Maven Projektstruktur. Also packe die Datei Variablen1.java mal irgendwo unterhalb des src/ Ordners (bzw. unter src/main/java - nach Maven Konvention).
"src" steht hier für "source" oder "sources", also zu Deutsch: "Quelltext/-dateien"
Ich fass es nicht:
Du lieferst mir die Lösung nach Wochen vergeblicher Versuche.
Ich habe das Programm nach src/main/java/org.example: kopiert und es funktioniert.
Das habe ich dann auch mit anderen Programmen, auch mit Unterprogrammen, probiert: Es klappt.
Ich danke dir recht herzlich.

Verstehen muss ich das jetzt alles noch nicht. Aber die Möglichkeit, fertige Programme abzuspielen, war für den Gebrauch von IntelliJ unverzichtbar.
Erst jetzt kann es weiter gehen mit dem Java-Lernen.
 
Ok, ich habe mir jetzt auch einmal die Materialien von dem Buch herunter geladen (https://www.rheinwerk-verlag.de/programmieren-lernen-mit-java/) und angesehen:

In dem ZIP ist ein ZIP Quellcode - da ist tatsächlich absolut keine Projektstruktur enthalten. Das ist etwas sehr ärgerlich.

Folgende Wege sehe ich:

a) Du baust Dir einfach ein neues Projekt und immer wenn Du in einem Kapitel bist, schiebst Du die Dateien des Kapitels in den src bzw src/main/java Ordner (Ja nach Projektstruktur. Du erkennst den richtigen Ordner in IntelliJ daran, dass dieser blau eingefärbt ist!)

Das dürfte recht gut funktionieren - zumindest beim schnellen durchgehen habe ich nur *.java Dateien gesehen (Je nach Projekt gehören andere Dateien ggf. in einen anderen Ordner - src/main/resources wäre da ein möglicher Ordner.)

b) Du verschiebst alle Dateien in den Ordner src/main/java (bzw. src) - das bringt aber leider ein paar Probleme mit sich;
b.1) die Unterordner werden alle zu sogenannten "packages". Damit fehlt da eine erste Zeile "package Kapitel1;" oder so.
Hier müsste man also die Dateien der Reihe durchgehen und diese Zeile einfügen bzw. einfügen lassen. IntelliJ sieht das auch und bietet da einen Fix an mit ALT Enter.
b.2) Es gibt doppelte Klassen (z.B. Kreisberechnung4JOptionPane) - In einem Projekt müssen alle Klassen eindeutig sein. Durch den Fix b.1 wird dies aber mit behoben - aber Du musst zumindest diese Problemfälle beheben.
b.3) Encoding - Die Dateien sind nicht UTF-8 kodiert sondern vermutlich CP-1252 (oder was das Windows Encoding ist). Das merkt IntelliJ auch und meckert das dann an - so in der Datei Umlaute verwendet wurden wie "Fläche" oder so. Aber das kann man ggf. sogar einfach ignorieren und hat dann halt kein "ä"

Bei den Arbeitsumgebungen gibt es in den JavaUebungxx Verzeichnissen .classpath und .project, aber da kommt beim Öffnen nicht zwingend etwas sinnvolles raus. Aber evtl. lag es auch daran, dass da noch ein weiteres ZIP war, das ich ggf. hätte entpacken müssen? Ob das mit Eclipse besser geht als mit IntelliJ? Ich würde generell sagen, dass ich da bei einem Buch die Materialien eher anders gewohnt bin und diese auch anders aufbereiten würde. Aber das ist erst einmal egal. Die Kapitel solltest Du mit den Hinweisen oben zumindest erst einmal durcharbeiten können.

Falls Du ein Projekt nimmst mit Java 9 oder neuer: Achte ggf. darauf, dass Du keine module-info.java Datei hast in Deinem Projekt. Wenn, dann kannst Du diese löschen oder umbenennen (Sonst hast Du ggf. Probleme, dass Du erst herausfinden musst, was für Module Du ggf. noch dort einbinden musst.

Das wäre da erst einmal so meine Sicht auf diese Problematik - vielleicht hilft es Dir ja. Und falls Du mit den Schritten bei b Probleme hast: Die kann man Dir ggf. auch einmal aufbereiten und dir dann zukommen lassen. (Wegen Copyright aber dann nur direkt ohne Veröffentlichung im Forum).
Wie du siehst, hat der Ordner-Hinweis von M.L. endlich zur Lösung meines langfristigen Problems geführt.
Dieser ist in deinem neuen Schreiben ja auch enthalten.
Dieses habe ich ausgedruckt, zum genauen Studieren.
Herzlichen Dank für deine umfangreiche Mühe.
 
Verstehen muss ich das jetzt alles noch nicht.
Da ist jetzt nicht viel zu verstehen, das ist einfach der Ort, in den Sourcen reingehören, fertig. In meinem Fall bei Netbeas gehören sie standardmäßig einfach nur in scr (+Packagename natürlich), das kann man aber alles konfigurieren, wenn man damit nicht zufrieden ist.

Lies am Besten mal nach, welche Ordner in IntelliJ wofür verwendet werden, wofür z.B. der "target" Ordner gut ist.
 
Über QuickFix und FixProjectSetup lässt sich aber zumindest in Eclipse auch schnell miglayout-swing.jar einbinden um das MigLayout im ContentPane implementieren zu können. In dem Buch wird meines Wissens nur Eclipse als IDE benutzt.
 

Zurück
Oben