02. november 2003 - 23:58Der er
47 kommentarer og 1 løsning
Illegal UTF8 string in constant pool
Hjælp Hjælp...Jeg er på skideren...Undskyld sproget.
Jeg står med et mega problem...Jeg har kæmpet med at lave en applikation der skal deployes som en enkelt jarfil. Der ligger en masse rescourser i denne jar fil .class/.dll/.txt -filer som den læser ind og skriver ud på disken. Det virker fint nok med .txt og .dll men den ødelægger åbenbart classfilerne.
jarfilen fungerer som en installer der hiver en masse jarfiler etc. ud og bla. laver en batfil med classpath mv. således at man kan eksekvere skidtet... Men når man prøver at køre classfilerne får man følgende medd:
C:\>java -cp showfiles showfiles.MainUi Exception in thread "main" java.lang.ClassFormatError: showfiles/MainUi (Illegal UTF8 string in constant pool) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Håber at der er nogen der har et bud på om det kan afhjælpes, eller om jeg er fortabt...
Jeg tror at jeg har fået forklaret mig forkert...Eller også så forstår jeg ikke hvad du mener...
jeg har en jarfil...Når jeg dobbeltklikker på den så henter den nogle classfiler(inde fra sig selv) og lægger dem ud på brugerens disk. via:getClass().getResource
problemet er, at fra den henter classfilerne (fra sig selv) til den skriver dem ud på disken, så sker der et eller andet..
Jeg ved at classfilerne fungerer (jeg har selv skrevet, kompileret og testet dem) men når jarfilen kopierer dem ud på disken bliver de korrupte??
bytestørrelsen er præcis ens..Jeg forstår det ikke helt...
Hvis jeg eksekverer programmet uden at pakke det i en jarfil så smider den classfilerne ud på drevet og derefter kan de sagtens eksekveres ...men lige så snart den skal hente dem ud fra en jarfil så går der noget galt
InputStream is = getClass().getResource("installclasses/"+fileName).openStream(); int n1 = is.available(); contents = new byte[n1]; int ix = 0; while(ix < n1) { int n2 = is.read(contents,ix,n1-ix); ix += n2; } is.close(); return contents;
Det ville være rart at vide hvad der spillede ind. Selvfølgelig er det rart når det "bare" virker, men det optimale er jo at finde fejlen så man kan tage det med som en erfaring... Når jeg får tid (engang i 2024) vil jeg sætte mig ned og prøve at teste lidt på de forskellige metoder. Men hold da op jeg er glad for det kører nu...Arne læg et svar..
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.