Class.forName给出了ClassNotFoundException

时间:2012-09-27 12:19:33

标签: java

我使用以下代码::

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

我得到以下

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)

注意:存在SmsHelper类。

如果我遗漏了任何东西,请建议。

3 个答案:

答案 0 :(得分:17)

使用完全限定名称。

示例:

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

答案 1 :(得分:4)

请在 forName 方法中将类名称及其包名称(您的类所在的位置)写为字符串。以下是要使用的示例:

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

答案 2 :(得分:3)

  1. class.forName()需要一个完全限定的类名 - 例如com.tcs.foo.bar.SmsURLHelper

  2. 为什么不写SmsHelper.class - 将在编译时检查,编译为适当调用class.forName()。