2017-08-23 18 views
-1

次のコードは、私はコマンドJavaテストAを与えているとき私はエラーNoClassDefFoundErrorを取得しているとき、私はコマンドのJavaテストSを与えるとき、エラーはClassNotFoundです。 newInstance()が使用され、クラスが、その後にClassNotFoundエラーがnewInstance()| ClassNotFoundException | NoClassDefFounfError

なぜエラーに差があるのcomポートべきで見つからない場合は、私の知識を1として

enter image description here

class Test { 

public static void main(String[] args) throws Exception 
{ 
    System.out.println("In Main Method"); 
    Object o = Class.forName(args[0]).newInstance(); 
    System.out.println(o.getClass().getName()); 
} 

} 

class Student 
{ 

} 

class Teacher 
{ 

} 
+1

を取得し、私はあなたの問題を再現することはできませんよInstantiationExceptionIllegalAccessException

を投げています。 .. – slambeth

+0

@slambeth AまたはStudentまたはSは、オブジェクトを作成するクラス名です。 –

+0

...はい、クラスパスをロードしてインスタンスを作成するには、クラスパスにそのクラスが実際に存在する必要があります。実験として、 "A"の代わりに "java.lang.String"でコマンドを試してください。 – slambeth

答えて

-1

)のnewInstance(もし私の知識を1として使用され、クラスが、その後にClassNotFoundエラーが

@CallerSensitive 
public static Class<?> forName(String className) 
      throws ClassNotFoundException { 
    Class<?> caller = Reflection.getCallerClass(); 
    return forName0(className, true, ClassLoader.getClassLoader(caller), caller); 
} 

forName方法はClassNotFoundException例外をスローされているCOMべきでは見られません。

newInstance方法は、それぞれの場合に、私はそれはあなたが「A」は、あなたのコマンドでやっていると思いますされて何ClassNotFoundException

関連する問題