petterg Skrevet 23. februar 2012 Del Skrevet 23. februar 2012 Følgende kode kjører fint ved bruk av javac / java fra kommandolinje. Men i Netbeans kaster linja c = Class.forName("Test") konsekvent en ClassNotFoundException. Den fremviste koden er resultatet av debug av en større kode og snevret inn til det minimale som vil reprodusere feilen. Class.forName feiler tilsynelatende uansett i hvilken sammenheng den brukes i Netbeans. Jeg kjører: NetBeans IDE 7.1 (Build 201112071828) Java: 1.7.0_02; Java HotSpot Client VM 22.0-b10 JDK og Netbeans ble lastet ned i en samlet pakke. Jeg er derfor ganske sikker på at java / javac fra kommandolinje kjører fra samme installasjon som Netbeans. Koden lar seg heller ikke fra .jar generert av Netbeans. Netbeans er jo et kjekt verktøy å skrive i, så kunne vært kjekt om koden også lot seg kjøre der. Jeg finner mange som har rapportert et tilsvarende problem, men de har ikke vært så spesifike, og alle har vært på eldre versjoner av Netbeans. Er det noen som har forslag til løsning på dette? Kan dette være et 32/64bit problem? Jeg sitter med 64bit. Kan noen ta seg bryet med å prøve samme kode i sin netbeansinstallasjon for å se om det samme problemet gjelder der? public class TestForname { public TestForname() { Class c; Test t; try { c = Class.forName("Test"); t = (Test)c.newInstance(); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { System.out.println(e); e.printStackTrace(); } } public static void main(String[] args) { TestForname t = new TestForname(); } } public class Test { public Test() { int i = 3; System.out.println(i); } } Resultatet ved kjøring i netbeans ser slik ut: java.lang.ClassNotFoundException: Test at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:186) at testforname.TestForname.<init>(TestForname.java:17) at testforname.TestForname.main(TestForname.java:29) Lenke til kommentar
Hieronymus Skrevet 23. februar 2012 Del Skrevet 23. februar 2012 (endret) Jeg fikk kjørt kodeeksempelet ditt uten problemer. Husk bare at hvis klassen Test ligger i en package, så må dette angis i forName, eks: c = Class.forName("mypackage.Test"); --- Hieronymus Endret 23. februar 2012 av Hieronymus Lenke til kommentar
petterg Skrevet 23. februar 2012 Forfatter Del Skrevet 23. februar 2012 Ah! Takk for tipset! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå