06. september 2002 - 17:28Der er
10 kommentarer og 1 løsning
Inkludere Jar-filer i applet.
Jeg har et par jarfiler, som jeg skal bruge udover javas standard biblioteker. Jeg har tilføjet alle jarfilerne til min classpath, og jeg kan også compilere programmet fint. Men når jeg kører min applet får jeg en noClassDefFoundError for en af de klasser der ligger i en af Jar filerne.
Er der nogen der kan give en fornuftig forklaring på det?
Du skal lave en archive-attribute i dit applet-tag, som definerer "browserens classpath". I denne skriver du så dine jar-filer (jeg tror nok de skal adskilles med semikolon, men er ikke sikker). jar-filerne skal så være placeret i et offentligt bibliotek, f.eks. i samme side som den html (eller jsp)-side, der tilgår den, altså på samme måde som man placerer applet-klassen.
Soelvpil: Det du prøver at sige, er hvis jeg vil køre en applet som ligger i en jar-fil. Det har jeg ingen problemer med. Men hvis jeg vil køre FlotApplet.class som ligger i jar-filen j2ee.jar, får jeg en noClassDefFoundError. Og den klasse der ikke er fundet en helpClass.class som ligger i help.jar.
Jeg kan som sagt godt compile den (FlotApplet.class) men ikke køre den.
Har I andre idéer? Jeg håber virkelig at få løst problemet snart, da jeg skal aflevere eksamensprojekt på fredag...
Takker soelvpil. Det virkede. Kan du forklare mig en anden ting så? Jeg skal fra min jarfil læse/skrive fra/til en tekstfil. Denne fil kan mit program ikke finde! Jeg har tilladelser til det, da jeg har signet min applet. Jeg har prøvet at lægge txtfilen udenfor jarfilen og inden i... men samme fejl... Nogen gode idéer?
Njaaaaa, sikkerhed og applets er ikke lige min stærke side.
Hvad skal du bruge det til? Jeg tror du kan læse fra en tekstfil inde i din jar-fil, ved at bruge System.getRessourceAsStream("minfil.txt") er dog ikke helt sikker på om det kan give en SecurityException, jeg har ikke selv prøvet det fra en Applet.
Men skrive til den er værre. Det ville muligvis heller ikke hjælpe så meget, for den vil jo blive overskrevet næste gang brugeren går ind på side, og kan ske at downloade en ny "startversion" af tekstfilen.
Så her bliver du nok nødt til at oprette en ny fil på brugerens disk, som du så skriver til og siden læser fra. Hvis filen skal have et startudseende kan du muligvis gøre følgende:
1. check om filen lígger der i forvejen. 2. hvis den ikke gør det, så opret den og overflyt indholdet fra din tekstfil i jar-filen til den. 3. herefter kan du læse og skrive fra den.
Det hele forudsat at sikkerheden er ok, det er jeg ikke helt sikker på.
Æhh... Jeg tror/håber vi snakker lidt forbi hinanden... Jeg vil gerne have en textfil som alle har adgang til at skrive/læse i... Den skal fungere som DB for brugerne på intranettet.
Men forstår jeg dig rigtigt, at man ikke kan læse/skrive fra txtfil i jarfilen? uanset rettigheder...
Det betyder at du ikke kan have tekstfilen i jar-filen. For ganske vist kan du sikkert nok læse fra den, men evt ændringer kommer aldrig tilbage, hvor andre brugere kan få adgang til dem (jar-filen bliver jo ikke kopieret tilbage til serveren igen).
Du bliver så nødt til at have tekstfilen til at ligge på serveren, så alle brugere tilgår den samme fil. Du skal dog lige være opmærksom på, at du let kan rende ind i problemer, hvis flere brugere vil tilgå den samme fil på samme tid. Så hvis der kommer en del brugere på, er du simpelt hen nødt til at bruge en database.
Hvis du er i tvivl om, hvordan man tilgår en tekstfil på serveren, kan du evt oprette et nyt spørgsmål.
Tusind tak! Det jeg forstår at du siger, er så at jeg skal angive en absolut "path" til txt-filen. Har jeg ret i det? Jeg har selv lavet noget synchronisering, så de flere brugere bliver ikke et problem. Jeg ville skam også hellere bruge en rigtig DB, men det har jeg ikke mulighed for på dette intranet.
Jep, det burde virke ved at åbne en url til serveren, husk dog lige rettigheder til filen inde på serveren.
Hvis synkroniseringen ligger i applet'en hjælper den dig ikke noget, koden bliver jo i princippet afviklet på 100 forskellige jvm'er rundt omkring i verden.
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.