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.classclass.forName()への適切な呼び出しにコンパイルされたコンパイル時にチェックされる-を書くだけではどうでしょうか。

于 2012-09-27T12:24:10.993 に答える