13

我正在使用以下代码::

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

我得到以下

堆栈跟踪 ::

 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 类。

如果我错过了任何事情,请提出建议。

4

3 回答 3

21

使用完全限定名称。

例子:

Class.forName("com.yourownpackage.SmsHelper"); 
于 2012-09-27T12:22:12.393 回答
4

请在forName方法中将类名及其包名(您的类所在的类)作为字符串写入。这是要使用的示例:

String className  = "com.testpackage.SmsHelper";
Class c = Class.forName(className); 
于 2012-09-27T12:23:28.153 回答
4
  1. class.forName()需要一个完全限定的类名——例如com.tcs.foo.bar.SmsURLHelper.

  2. 为什么不直接写SmsHelper.class——这将在编译时检查,编译为对 class.forName() 的适当调用。

于 2012-09-27T12:24:10.993 回答