Heim > Fragen und Antworten > Hauptteil
被加载类和加载类的程序在一个文件夹下;
运行没有任何结果:
D:java_exercise>javac URLTest.java
D:java_exercise>java URLTest
D:java_exercise>
加载类:
import java.net.*;
import java.io.File;
import java.net.URLClassLoader ;
public class URLTest
{
public static void main (String [ ] args )
{
URL[ ] urls = new URL[1] ;
try {
urls[0] = new URL("file",null,(new File(System.getProperty("user.dir") + File.separator)).toString ( ) );
URLClassLoader cl = new URLClassLoader ( urls) ;
cl.loadClass ("Testee");
}
catch (Exception e)
{
e.printStackTrace ( ) ;
}
}
}
被加载类:
public class Testee
{
static
{
System.out.println ("I am loaded!");
}
}
PHP中文网2017-04-18 09:19:30
这个问题在于类的静态代码代码块啥时候执行:
在类初始第一个实例的时候或者静态方法被使用之类的(或者其他:??具体看Java官方的语言细究吧)
你这个才load了class并没有满足条件
urls[0] = new URL("file", null, (new File(System.getProperty("user.dir") + File.separator)).toString());
URLClassLoader cl = new URLClassLoader(urls);
Class<?> testee = cl.loadClass("Testee");
Constructor<?> constructor = testee.getConstructor();
Object beanObj = constructor.newInstance();
就可以了