Packages Problem


  • Administrator

    Igitt, Igitt, Igitt ... Ich als C++-Progger gehe in ein Java-Forum-Abteil, wie grässlich 😃
    Aber humor mal beiseite, habe ein kleines Problem in Java mit den Packages:

    Ich habe viele verschiedene Packages, welche alle natürlich ihren eigenen Ordner haben. Wie mache ich es nun, wenn ich eine Klasse in all diesen Packages brauche und sie nicht überall dazukopieren will und den Packagenamen verändern will usw. usf?
    Gibt es da irgendeine Möglichkeit?

    Vielleicht nochmals ein wenig verdeutlicht:
    Packages: A, B, C, D, E, F, G, H, Z
    Z soll nun in A, B, C, D und H verwendet werden. Wie mache ich das?

    Danke für die Hilfe!

    Grüssli



  • und wo is das problem?



  • Ganz normal importieren:

    package Z;
    
    import A;
    import B;
    ...
    import H;
    
    public class Irgendwas{
      public void xyz(){
        ...
      }
    }
    

    ... und wenn du die Namen veränderst, die coolen Refactoring-Methoden deiner IDE verwenden. Die wird alles automatisch anpassen. Falls deine IDE das nicht kann: andere IDE verwenden 😉

    Achtung: Import != Include, wenn ein Package "Y" einen Import auf "Z" hat, wird es die Packages A,B,C,D und H nicht sehen (es sei denn, die werden ebenfalls importiert).


  • Administrator

    JBeni schrieb:

    Ganz normal importieren:

    package Z;
    
    import A;
    import B;
    ...
    import H;
    
    public class Irgendwas{
      public void xyz(){
        ...
      }
    }
    

    Ehm irgendwo verwechselst du da was. Ich habe gesagt ich will Z IN A, B, C, D und H verwenden und NICHT A, B, C, D und H in Z!
    Oder geht das irgendwie auch rückkoppelnd, denke nicht, wäre ja extrem seltsam ^^

    Grüssli

    PS: Benutze derzeit noch gar keine IDE :p



  • erstens ist da nichts "koppelnd" daher auch kein "rückkoppelnd"
    natürlich klappt das mit "import Z;" warum auch nicht ???



  • muss natürlich heißen "import Z.KlasseAusZ;"


  • Administrator

    *kopfkratz* rede ich wirklich so wirr, dass man mich nicht versteht. Aber ok, mal schauen ... ich baue mal einen Projekttree, vielleicht erkennt man dann das Problem besser.

    Projectfolder
        |
        |-- packa
        |-- packb
        |-- packc
        |-- packd
        |-- packe
        |-- packf
        |-- packg
        |-- packh
        |-- packz
    

    Ok und nun ein bisschen Code:

    // In .\Projectfolder\packa haben wir ein File ClassA.java
    package packa;
    
    /* 1 */
    
    public class ClassA
    {
        // ...
    }
    
    // In .\Projectfolder\packb haben wir ein File ClassB.java
    package packb;
    
    /* 2 */
    
    public class ClassB
    {
        // ...
    }
    
    // usw.
    
    // In .\Projectfolder\packz haben wir ein File ClassZ.java
    package packz; 
    
    public class ClassZ
    {
        // ...
    }
    

    An der Stelle /* 1 / und an der Stelle / 2 */ kann ich ja nicht ein

    import packz.*;
    

    schreiben, da er dann das Package packz nicht finden kann. Aber wie verwende ich das packz dann dort, bzw. wie muss ich mein Projekt umgestalten, damit das möglich ist? Ist es jetzt verständlich?

    Grüssli



  • Dravere schrieb:

    Ehm irgendwo verwechselst du da was. Ich habe gesagt ich will Z IN A, B, C, D und H verwenden und NICHT A, B, C, D und H in Z!

    Au, ja, ich verwechsle was. Naja, lies meinen Code auf dem Kopf, dann stimmt es wieder 😃

    An der Stelle /* 1 / und an der Stelle / 2 */ kann ich ja nicht ein
    [...] schreiben, da er dann das Package packz nicht finden kann. Aber wie verwende ich das packz dann dort, bzw. wie muss ich mein Projekt umgestalten, damit das möglich ist? Ist es jetzt verständlich?

    Ok, das kapier ich nicht. Wieso sollte das nicht gehen? Kriegst du eine Fehlermeldung? Wenn ja: liegen all die java-Dateien in den richtigen Ordnern? Die Package-Struktur muss mit der Ordner-Struktur übereinstimmen ("ClassZ.java" muss in einem Ordner "packz" liegen).


  • Administrator

    *ist grad ein wenig baff* ... *hat es nochmals versucht und nun ging es*
    Ich wollte nachschauen, wie genau die Fehlermeldung hiess und plötzlich ging es. Keine Ahnung wieso oder warum, habe auch nichts verändert am Code oder so. Habe nur neu kompiliert. Das einzige was anderst war, ist dass ich Java geupdatet habe, kam ja erst gerade eine neue Version raus, aber ich kann mir nicht vorstellen, dass es daran lag! Tut mir leid, dass ich eure Zeit vergeudet habe, aber ... *versteht dat nicht* ...

    Java ist gleich wie C++, verursacht auch unerklärliche Fehler :p

    Grüssli



  • irgendwie hab ich nur das gefühl du kansnt absolut nix 😕 👍 👍 👍


Anmelden zum Antworten