/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
classLoader kan ikke loade while-løkker !!~
Fra : Nikolaj


Dato : 15-12-00 15:08

Jeg har problemer med at loade en klasse ind fra en fil, men kun hvis den
indeholder en while-løkke

Prøv at kigge på følgende kode:

public static void main(String[] args) {
try {
// en instans af min egen klasse ClassFileLoader oprettes
// for at få adgang til den private metode defineClass
ClassFileLoader cfl = new ClassFileLoader();

Class c = cfl.loadAndDefineClass();

// printing the name of the class
System.out.println(c);
} catch (Throwable t) {
System.out.println(t);
}
}

loadAndDefineClass ser sådan ud. Det er metoden define class, der giver en
ClassFormatError.

public Class loadAndDefineClass() throws Exception {
// loading the classfile into a byte[]
Vector v = new Vector();
File f = new File("D:/TestClass.class");
FileInputStream is = new FileInputStream(f);
byte b = (byte) is.read();
while (b != -1) {
v.add(new Byte(b));
b = (byte) is.read();
}
byte[] bytes = new byte[v.size()];
for (int i = 0; i < v.size(); i++) {
bytes[i] = ((Byte) v.elementAt(i)).byteValue();
}

// trying to define the class (converting the byte[] into a
Class-object)
Class c = defineClass("TestClass", bytes, 0, bytes.length, null);
return c;
}

Klassen jeg prøver at loade ser sådan ud:

public class TestClass {
public void method() {
System.out.println("inside method");
double d = Math.random();
while(d<.9) {
System.out.println("d");
d = Math.random();
}
System.out.println("end of method");
}
}

Klassen compiler fint.
Hvis jeg udkommenterer while-løkken kan jeg loade og define mit
Class-objekt. Hvis while-løkken er der får jeg en ClassFormatError, der
angiver at byte[]'et ikke indeholder data svarende til en klasse..
HVORFOR????

Håber du kan hjælpe mig.

Nik



 
 
Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste