Avatar billede martinhrj Nybegynder
06. september 2002 - 17:28 Der 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?

På forhånd tak!
Martin
Avatar billede aslan Nybegynder
07. september 2002 - 01:16 #1
Prøv at smide dine jar filer i ca.

C:\j2sdk1.4.1\jre\lib\ext
Avatar billede soelvpil Nybegynder
07. september 2002 - 15:32 #2
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.

eks. <applet width="300" height="200" class="FlotApplet.class" archive="j2ee.jar">
Avatar billede martinhrj Nybegynder
08. september 2002 - 15:13 #3
Aslan: Det hjalp ikke!

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...
Avatar billede aslan Nybegynder
08. september 2002 - 15:38 #4
hhmm underligt jeg har lavet en chat der oxo er en jar fil og den virker med denne kode som soelvpil oxo sagde?

<applet code="Chat.class" ARCHIVE="chat.jar" codebase="." width="695" height="540"></applet>
Avatar billede soelvpil Nybegynder
08. september 2002 - 17:15 #5
Hvis din applet ligger i en jar-fil, og referer klasser i en anden jar-fil, skal de begge angives.

Prøv med

<applet width="300" height="200" class="FlotApplet.class" archive="jar_med_min_applet.jar,help.jar">

(hvis applet'en ikke er i en jar-fil, er første del ikke nødvendig).

Jeg checkede lige, det er tilsyneladende komma og ikke semikolon der skal bruges. Se evt mere på

http://java.sun.com/docs/books/tutorial/applet/
Avatar billede martinhrj Nybegynder
09. september 2002 - 09:34 #6
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?
Avatar billede soelvpil Nybegynder
09. september 2002 - 16:17 #7
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å.
Avatar billede martinhrj Nybegynder
09. september 2002 - 21:30 #8
Æ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...
Avatar billede soelvpil Nybegynder
10. september 2002 - 22:18 #9
OK, så er det jo en anden sag.

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.
Avatar billede martinhrj Nybegynder
10. september 2002 - 22:31 #10
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.
Avatar billede soelvpil Nybegynder
10. september 2002 - 22:52 #11
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.
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