2012-09-27 10 views
7

estoy usando el siguiente código ::Class.forName está dando ClassNotFound Excepción

String className = "SmsHelper" 
Class c = Class.forName(className); 

y estoy recibiendo el siguiente

StackTrace ::

inside main java.lang.ClassNotFoundException: SmsURLHelper 
    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.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at com.tcs.sms.actions.SmsUtil.invoke(SmsUtil.java:131) 

Nota: La clase SmsHelper está presente.

Por favor, sugiera si me he perdido algo.

+1

¿Cuál es el nombre real y totalmente calificado de la clase? 'SmsHelper',' SmsURLHelper', o 'com.foo.bar.SmsURLHelper'? –

Respuesta

15

Utilice el nombre completo.

Ejemplo:

Class.forName("com.yourownpackage.SmsHelper"); 
+0

Gracias por la respuesta ... –

+0

De nada. – Mik378

4

Por favor escribe el nombre de la clase, junto con el nombre del paquete (en el que reside la clase) como una cadena en el método deforName. Aquí está la muestra a utilizar:

String className = "com.testpackage.SmsHelper"; 
Class c = Class.forName(className); 
3
  1. class.forName() espera un nombre de clase completo - como com.tcs.foo.bar.SmsURLHelper.

  2. ¿Por qué no acaba de escribir SmsHelper.class? Que se comprobará en tiempo de compilación, compilado a una llamada apropiada a class.forName().

Cuestiones relacionadas