我试图从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
这些都是在与我的主程序不同的线程中完成的。
任何帮助将不胜感激。
最佳答案
com.sun.tools.attach.VirtualMachine
的构造函数的修饰符受到保护,并带有两个参数。这就是为什么无法使用newIntance()
创建新实例的原因。
仅当构造函数为零时,Class.newInstance()才会成功
参数,并且已经可以访问。
但是,在VirtualMachine上定义了静态的attach
方法,可用于获取实例。
另请参阅class instantiation上Oracle的文档。