给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) PersonneAClassA子类而不是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)这是错误的语法:)