16. november 2002 - 16:24Der er
27 kommentarer og 3 løsninger
At putte filer i CLASSPATH
Jeg har downloaded nogle java-beans fra internettet som jeg skal bruge i et program jeg er ved at udvikle.
På manden der har lavet de beans' hjemmeside står der at man bare skal putte jar-filen ind i classpath, og så er det installeret!
MEN HVORDAN FANDEN GØR MAN DET?
Jeg har prøvet med alt muligt, fx: java -classpath jarfil.jar java -cp jarfil.jar
jeg ved ikke om det er det man skal bruge, men HVER gang kommer der en exception: Exception in thread "main" java.lang.NoClassDefFoundError: jarfil/jar:
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Der står på hjemmesiden at man bare skal smide jar-filerne ind i classpath.
Jeg har indtil videre forstået det sådan at jar-filerne er pakker, ligesom javax.swing osv.og at jeg så kan bruge programmerne i mine egne programmer ved at skrive import program.fra.internet.*;
ok i dit java udviklings kit ligger der en mappe der hedder "jre" den har en undermappe der hedder "lib" og den har en undermappe der hedder "ext" Hvis du kopier jar filen der i så behøver du ikke at sætte classpath'en fordi den er sat til det bibliotek.
Du skal bare inkludere jar filen som herunder, og huske at du så skal angive navnet på dit program, det er manglen på sidstnævnte der giver dig problemer: java -cp .;c:\path\to\jar/jarfil.jar DitProgramNavn (under windows; under unix brug : i stedet for ;).
Jeg vil absolut fraråde dig at begynde at smide fremmede jar-filer ind i jre\lib\ext - det blander ting sammen som ikke har noget med hinanden at gøre.
Hvis du har downloaded jarfil.jar og skal bruge den i dit Java program JavaFil.java, så compiler du med:
javac -classpath jarfil.jar JavaFil.java
og kører med:
java -classpath jarfil.jar JavaFil
(hvis jarfil.jar skal bruges af flere programmer, så ligger du den i et separat directory og angiver sti i classpath'en)
Jeg har prøvet det der med at ligge filen i ext, men det virker ikke umiddelbart!
Det sidste du nævner Arne V, er det jeg skal bruge.
Men hvordan angiver jeg stien i classpath... og hvis det bare bliver compilet hvor jeg i javafil har import pakke.*; så skal jeg vel ikke køre programmet på nogen speciel måde
det fatter jeg ikke. det kan da ikke passe at man skal køre programmet på en bestemt måde bare fordi man har fået en ny pakke.
Så vidt jeg ved kan man også selv lave en pakke. Og kan man ikke få dem til at være en pakke ligesom alt andet, fx javax.swing.*; uden at skulle compile og køre på nogen specielle måder hver eneste gang??? Altså man udvider bare javas bibliotek med egne programmer. Det må sku da kunne lade sig gøre, ellers har jeg svært ved at se det fornuftige i Objekt orienteret programmering...
Det er sikkert bare mig der ikke har forstået nogetsomhelst...
det som arne_v siger er at du skal stille dig i det bibliotek hvor din java fil ligger. Her skriver du først javac -classpath (stien til din jar fil);. (navnet på din java fil).java java -classpath (stien til din jar fil);. (navnet på din java fil)
. betyder at du sætter classpath'en til det aktuelle bibliotek. Det er rigtig at det er bedre rent struktur mæssigt at gøre det sådan.
Alle pakker skal have sat en classpath. Hvis du sætter classpath'en fast til et bibliotek hvor du har alle dine pakker,klasser,jar filer så behøver du ikke at compile sådan.
export JDK_HOME=/usr/j2sdk1.4.1_01 (din sti) export JAVA_HOME=/usr/j2sdk1.4.1_01 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=$JAVA_HOME/lib;.;+(dine andre stier)
altså, hvis man har tilføjet en jar fil til classpath, hvordan kan man så bruge de klasser der ligger i denne? Bare ligesom man ville bruge fx javax.swing.JPanel; ??
så siger den at pakken com.toedter.calender ikke eksisterer. Er det noget jeg har skrevet forkert, eller er det pakken der er forkert lavet eller noget?
Jeg fik det aldrig til at virke... Der må have været noget galt. Men nu har jeg Debian og bruger NetBeans, og der kan den selv finde ud af at putte jar-filer osv. i classpath...
Synes godt om
Ny brugerNybegynder
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.