07. marts 2002 - 21:10Der 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?
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?
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.
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
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.
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?
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?
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.
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
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?
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.