给main一个参数
当我将args中的Class命名为main时,参数为:“myPackage.Algo.PersonneA”。 我有一个例外,我不知道为什么?
线程“main”中的exceptionjava.lang.ClassNotFoundException:myPackage.Algo.PersonneA
这是我的主要内容:
public static void main(String[] args) { Algo rf = (Algo) Class.forName(args[0]).newInstance(); }
这是一个我想要在主要的instanciate的类。
package myPackage; public class Algo { public static class PersonneA extends ClassA { public Algorithm create(int r) { return new AlgorithmDist(new DistributedDocument(), r); } } public static class PersonneB extends ClassA { public Algorithm create(int r) { return new AlgorithmSimul(new SimulationDocument(), r); } } }
两件事情:
(1)对于内部类,需要传递给forName()
字符串:
"myPackage.Algo$PersonneA" ^ instead of .
内部类与一个封闭的类分开,而不是一个.
。
因此将main()
的参数更改为上面的字符串而不是您提供的字符串。
(2) PersonneA
是ClassA
子类而不是Algo
子类 – 所以在修复问题1之后你仍会得到ClassCastException
,因为PersonneA
类型的对象不是Algo
类型
你的主要应该是这样的:
public static void main(String[] args) { Algo rf = (Algo) Class.forName(args[0]).newInstance(); }
你写道: static public void main(String[] args)
这是错误的语法:)