我使用以下代码::
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类。
如果我遗漏了任何东西,请建议。
答案 0 :(得分:17)
使用完全限定名称。
示例:
Class.forName("com.yourownpackage.SmsHelper");
答案 1 :(得分:4)
请在 forName 方法中将类名称及其包名称(您的类所在的位置)写为字符串。以下是要使用的示例:
String className = "com.testpackage.SmsHelper";
Class c = Class.forName(className);
答案 2 :(得分:3)
class.forName()
需要一个完全限定的类名 - 例如com.tcs.foo.bar.SmsURLHelper
。
为什么不写SmsHelper.class
- 将在编译时检查,编译为适当调用class.forName()。