我正在尝试从Java的JDK导入tools.jar
,但每当我尝试从库中创建InstantiationException
类时,我都会得到newInstance
。
到目前为止我的代码:
File toolsLib = new File("myjdk/lib/tools.jar");
URLClassLoader myClassLoader = new URLClassLoader(new URL[] { toolsLib.toURL() }, System.class.getClassLoader());
Class vmClass = myClassLoader.loadClass("com.sun.tools.attach.VirtualMachine");
vmClass.newInstance(); //This is where I get an InstantiationException
这一切都是在我的主程序的单独帖子中完成的。
非常感谢任何帮助。
答案 0 :(得分:1)
com.sun.tools.attach.VirtualMachine
的构造函数具有受保护的修饰符并带有两个参数。这就是使用newIntance()
无法创建新实例的原因。
Class.newInstance()只有在构造函数为零时才会成功 参数已经可以访问。
但是VirtualMachine上定义了静态attach
方法,可用于获取实例。
另请参阅有关class instantiation的Oracle文档。