Avatar billede Peter Praktikant
07. marts 2002 - 21:10 Der er 31 kommentarer og
1 løsning

classpath der tager alle undermapper med

Jeg har stillet spørgsmålet før, men da var der ikke nogen der kunne hjælpe. Nu prøver jeg i denne kategori.
Jeg har installeret java og har nogle classes til at ligge i et katalog, de er ordnet i mapper med undermapper. Jeg har så lavet en classpath til en mappe "dir" men hvis class'en ligger i en mappe i mappen "dir" kan java ikke finde den. Hvordan løser man det problem?
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 21:11 #1
Du siger vel bare (ca.)

import mappe.undermappe.dir.klassenavn;
Avatar billede disky Nybegynder
07. marts 2002 - 21:11 #2
ligger de på den måde pga. du har et package hieraki ?

Så skal kun roden nævnes i CLASSPATH.
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 21:12 #3
Nå, ja, du bruger vel Javas "package" begreb korrekt, ikke?
Avatar billede Peter Praktikant
07. marts 2002 - 21:14 #4
jeg har ikke et package hieraki.
jeg ville gerne undgå at importere da nogle af af de andre class-filer kalder filer i samme bibliotek.
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 21:15 #5
Ok, jamen så har vi løsningen: du *skal* have et package hieraki.
Avatar billede Peter Praktikant
07. marts 2002 - 21:17 #6
hvordan laver jeg et sådant, jeg er rimeligt newbie. Kan i smide et link eller noget.
Avatar billede disky Nybegynder
07. marts 2002 - 21:18 #7
www.javasoft.com

der står alt du skal vide om java.
Avatar billede Peter Praktikant
07. marts 2002 - 21:28 #8
jeg kan vel ikke få et lidt mere direkte link.
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 21:30 #9
Du kan jo også bare kigge i din Java-bog - det er ret
fundamentalt i Java.
Avatar billede Peter Praktikant
07. marts 2002 - 21:46 #10
Problemet er, at jeg har downloadet alle disse eksempelfiler til min bog. Disse ligger som sagt i forskellige biblioteker. Men det dur vel ikke bare at kalde metoderne fra de andre klasser med mappenavn.metode hvor mappenavn er hvor metoden ligger?
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 21:52 #11
Det er vel fordi forfatterne faktisk har forstået så meget Java,
at de *har* et package hierarki.
Avatar billede Peter Praktikant
07. marts 2002 - 21:55 #12
jeg har helt sikkert ikke forstået særlig meget java endnu, men jeg kommer ikke herind for at blive gjort opmærksom på det og hånet. Jeg kommer her faktisk for at få løst mit problem. Hvis du ikke har lyst til at hjælpe mig fordi det er et alt for simpelt spørgsmål for dig så lad vær, men kan du så ikke også lade være med at genere mig.
Jeg vil gerne have din hjælp, men uden dine sarkastiske kommentarer.
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 21:57 #13
Og det har du fået. Lav det klassehierarki, som vi nu har sagt
mange gange. Hvorfor skal vi blive ved med at sige det?
Avatar billede soreno Praktikant
07. marts 2002 - 22:03 #14
hvad er det for en bogs eksempler?
Avatar billede Peter Praktikant
07. marts 2002 - 22:04 #15
jeg er ikke klar over hvad et klassehieraki er og hvordan man laver det. Jeg er lige startet med java og ved intet om det.
Avatar billede Peter Praktikant
07. marts 2002 - 22:07 #16
jeg har fået det til at virke ved at tilføje et punktum til min classpath.
Men jeg vil stadigvæk gerne vide hvad et klassehieraki er.
Soreno >Det er David J Barnes, OOP with Java
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 22:07 #17
Fint nok - det er vel derfor vi er her. Kom med et eksempel på
en Java-fil eller class-fil, og sig hvad du gør. Så kan vi
fortælle dig hvad der evt. er galt - og hvorfor.
Avatar billede Peter Praktikant
07. marts 2002 - 22:11 #18
jeg kan sagtens compile og køre mine filer med javac og java. Problemet var, at hvis jeg skulle arbejde med en af java filerne fra eksemplerne blev jeg nødt til at flytte dem allesammen ud i den yderste mappe, altså mappen defineret i min classpath. Men nu fandt jeg lige ud af, hvis jeg tilføjede . til classpathen kiggede den også i mappen efter class-filer.
Jeg ved ikke rigtigt om vi har snakket forbi hinanden. Men hvad er et klassehieraki?
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 22:23 #19
Egentlig en skrivefejl, jeg mente package hierarkiet ... men det gør
ikke så meget.
Avatar billede Peter Praktikant
07. marts 2002 - 22:26 #20
hvad er et packagehieraki?
Avatar billede Peter Praktikant
07. marts 2002 - 22:41 #21
okay, her er en java fil:
import Switches.SimpleSwitch;

class SwitchMain1 {
    public static void main(String[] args){
        SimpleSwitch upstairs = new SimpleSwitch(),
                    downstairs = new SimpleSwitch();

        downstairs.switchOn();
    }
}

Filen ligger i en mappe og SimpleSwitch.class ligger i mappen Switches.
Hvorfor får jeg en fejl der siger at classfilen SimpleSwitch indeholder den forkerte class. Fejl:

F:\backup\Documents\Opgaver\java\BarnesSources\Defining\SwitchMain1.java:1: cannot access Switches.SimpleSwitch
bad class file: .\Switches\SimpleSwitch.class
class file contains wrong class: SimpleSwitch
Please remove or make sure it appears in the correct subdirectory of the classpath.
import Switches.SimpleSwitch;
                ^
1 error

Tool completed with exit code 1

Hvis jeg i stedet importerer fra mappen under hvilket er mappen der er i min classpath får jeg en fejl der siger SimpleSwitch er private og kan ikke tilgås udefra.
Men hvis jeg compiler og kører SwithcMain1.java i samme katalog virker det fint.
Her har du en java fil og et spørgsmål, hvad gør jeg forkert?
Avatar billede Peter Praktikant
07. marts 2002 - 23:16 #22
er et packagehierarki alle de filer java selv har installeret, altså javas class-filer. For dem har jeg og de har aldrig været problemet. Jeg tror desværre jeg har misforstået jer og i så har misforstået mig. Men jeg håber det hele er udredt nu.
ErikJacobsen vil du ligge et svar så du kan få nogle point.
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 23:25 #23
Jeg skal ikke have point for ingenting.

Hvis der i SimpleSwitch.java er skrevet

  package Switches;

øverst, så skal .class filen ligge i kataloget Switches, et sted
hvor CLASSPATH peger. Står der det i den?
Avatar billede Peter Praktikant
07. marts 2002 - 23:40 #24
SimpleSwitch.java

package Switches;

class SimpleSwitch {
    public void switchOn(){
        System.out.println("Turn the switch on.");
        setOn(true);
    }

    public void switchOff(){
        System.out.println("Turn the switch off.");
        setOn(false);
    }

    public boolean isTheSwitchOn(){
        return getOn();
    }

    private boolean getOn(){
        return on;
    }

    private void setOn(boolean o){
        on = o;
    }

    private boolean on = false;
}
Avatar billede Peter Praktikant
07. marts 2002 - 23:41 #25
Fejlmeddelelse når jeg compiler SwitchMain1.java:

F:\backup\Documents\Opgaver\java\BarnesSources\Defining\SwitchMain1.java:1: Defining.Switches.SimpleSwitch is not public in Defining.Switches; cannot be accessed from outside package
import Defining.Switches.SimpleSwitch;
                        ^
1 error

Tool completed with exit code 1
Avatar billede erikjacobsen Ekspert
07. marts 2002 - 23:46 #26
public class SimpleSwitch {
Avatar billede Peter Praktikant
07. marts 2002 - 23:49 #27
selvfølgelig, det virker nu.
Vil du så ligge et svar.
Packagehierakiet er alle standardklasserne, eller hvad?
Avatar billede Peter Praktikant
07. marts 2002 - 23:50 #28
jeg smutter i seng, men kigger ind i morgen
Avatar billede erikjacobsen Ekspert
08. marts 2002 - 00:00 #29
Jah, en pakke er en samling klasser, der "hører sammen".
Java er født med én samling, og man bør selv lave en når man udvikler.
Avatar billede Peter Praktikant
08. marts 2002 - 11:10 #30
når du skriver man selv bør lave en samling, mener du så at ligge sine classes der er relevante for hinanden så de kan kalde hinanden. Eller ligger der mere bag end det?
Avatar billede Peter Praktikant
09. marts 2002 - 18:47 #31
da erikjacobsen ikke vil have point tager jeg dem selv tilbage.
Tak for hjælpen, det var ærgeligt vi kom lidt forkert ind på hinanden.
Avatar billede Peter Praktikant
09. marts 2002 - 18:47 #32
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester