Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 19:51 Der er 26 kommentarer og
1 løsning

Så er jeg her igen med et javakompileringsproblem

Hej igen folkens

Tjek lige det her:

class SeVirus{
        public static void main(String arguments[]){
            int antVirusser = Integer.parseInt(arguments[0]);
            if (antVirusser>0){
                Virus[] virii = new Virus[antVirusser];
                for (int i = 0; i<antVirusser; i++)
                    virii[i] = new Virus();
                System.out.println("Der er " + Virus.findVirusAntal() + " virusser.");
            }
        }
}

som anvender objektet:

public class Virus {
        static int virusAntal = 0;
       
        public Virus(){
                virusAntal++;
        }

        static int findVirusAntal(){
            return virusAntal;
        }
}

Jeg får hele 4 fejl... så vidt jeg kan se er det fordi SeVirus ikke kan finde Virusobjektet men jeg har class filen! ...

jeg får følgende fejl:

Virus/SeVirus.java [5:1] cannot resolve symbol
symbol  : class Virus
location: class SeVirus
                                Virus[] virii = new Virus[antVirusser];
                                ^
Virus/SeVirus.java [5:1] cannot resolve symbol
symbol  : class Virus
location: class SeVirus
                                Virus[] virii = new Virus[antVirusser];
                                                    ^
Virus/SeVirus.java [7:1] cannot resolve symbol
symbol  : class Virus
location: class SeVirus
                                        virii[i] = new Virus();
                                                      ^
Virus/SeVirus.java [8:1] cannot resolve symbol
symbol  : variable Virus
location: class SeVirus
                                System.out.println("Der er " + Virus.findVirusAntal() + " virusser.");
                                                              ^
4 errors
Errors compiling SeVirus.



På forhånd tak

/Christian
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 19:56 #1
Eksemplet er taget fra Rogers Cadenheads "JAVA2 BOGEN" og er meget uskyldigt hvis i undrer jer over alle viruserne og ikke lige kan overskue hvad programmet gør :)

/Christian
Avatar billede arne_v Ekspert
14. oktober 2003 - 19:57 #2
Prøv og sæt classpath !
Avatar billede arne_v Ekspert
14. oktober 2003 - 19:57 #3
javac -classpath . *.java

eller noget lignende.
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 19:57 #4
forklar?
Avatar billede arne_v Ekspert
14. oktober 2003 - 19:58 #5
-classpath .

betyder "søg i current directory" efter andre klasser.
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 19:58 #6
hvor skal jeg skrive det??
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 19:58 #7
ok men nu bruger jeg jo Netbeans og ikke en doskompiler.. så jeg skriver fx aldrig javac kommandoen... derfor er jeg lidt langsom... og forstår stadig ikke helt hvad du vil hava mig til?
Avatar billede arne_v Ekspert
14. oktober 2003 - 20:00 #8
Du bruger NetBeans.

Så burde det være nok at du bare har oprettet de to klasser i samme
folder/pakke.

Så finder NetBenas selvud af classpath.
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:00 #9
hov hava = have :)
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:03 #10
nu tilføjede jeg package Virus; og får nu 1 fejl:

Virus/SeVirus.java [6:1] cannot access Virus.Virus
bad class file: C:\Java\Virus\Virus.class
class file contains wrong class: Virus
Please remove or make sure it appears in the correct subdirectory of the classpath.
                                Virus[] virii = new Virus[antVirusser];
                                ^
1 error
Errors compiling SeVirus.
Avatar billede _carsten Nybegynder
14. oktober 2003 - 20:07 #11
Har du package statement i filerne ??


package java.virus;
Avatar billede arne_v Ekspert
14. oktober 2003 - 20:10 #12
Hvis du bruger package statement, så skal foldr strukturen svare
til package strukturen.
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:10 #13
hvor skal det tilføjes? i toppen af SeVirus.java?
Avatar billede arne_v Ekspert
14. oktober 2003 - 20:10 #14
package Virus;

kræver at de ligger i en folder Virus under "root folder".
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:11 #15
altså det bruger jeg ikke nej men nu tilføjede jeg package Virus; før og nu skriver den kun fejl i linjen

Virus[] virii = new Virus[antVirusser];
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:11 #16
det gør de også
Avatar billede arne_v Ekspert
14. oktober 2003 - 20:11 #17
Hvis ikke du har oprettet klasserne med pakke, så skal
du ikke sætte en package statement ind.

(medmindre den IDE har en refactor move funktion)
Avatar billede arne_v Ekspert
14. oktober 2003 - 20:12 #18
OK - det er fint.

Hvilken fejl får du så på den linie ?
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:14 #19
samme som jeg skrev før:

Virus/SeVirus.java [6:1] cannot access Virus.Virus
bad class file: C:\Java\Virus\Virus.java
file does not contain class Virus.Virus
Please remove or make sure it appears in the correct subdirectory of the classpath.
                                Virus[] virii = new Virus[antVirusser];
                                ^
1 error
Errors compiling SeVirus.
Avatar billede arne_v Ekspert
14. oktober 2003 - 20:15 #20
Har du sat package Virus ind i både SeVirus.java og Virus.java ?
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:15 #21
hmm det er faktisk ikke helt det samme som jeg skrev før.. før skrev den C:\Java\Virus\Virus.class
class file contains wrong class: Virus
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:19 #22
ok så fik vi ordnet det takker... men jeg har lige et spørgsmål mere nu jeg har dig ved hånden: meningen er at jeg skal ændre værdien fra 0 til noget andet men hvor skal jeg ændre?? jeg kunne ikke lige få det til at virke uden at få fejlen

java.lang.ArrayIndexOutOfBoundsException: 0
        at Virus.SeVirus.main(SeVirus.java:4)
Exception in thread "main"

ved kompilering af Sevirus.java
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:19 #23
eller næ ved afvikling må det være
Avatar billede arne_v Ekspert
14. oktober 2003 - 20:22 #24
Jeg tror at du har glemt at angive et argument til programmet og at
arguments[0] derfor giver den fejl.
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:23 #25
hvordan kunne det udtrykkes?
Avatar billede arne_v Ekspert
14. oktober 2003 - 20:27 #26
højre klik på klassen
properties
execution tab
arguments
skriv antal virus
Avatar billede togsverd1985 Praktikant
14. oktober 2003 - 20:30 #27
ok det kan jeg da forholde mig til.. men det er da begrænset hvad programmet fortæller mig?? hmm nå ja jeg lærte da noget.. igen... inden du opretter et spørgsmål på eksperten så check det med classpath og packages!

Også tak for hjælpen mht. de andre spørgsmål, Arne.. du er en guttermand :)

/Christian
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