使用URLClassLoader加载类,不会报错,但被加载类中的内容也没有打印出来

被加载类和加载类的程序在一个文件夹下;

运行没有任何结果:


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!");

        }

}


手掌心
浏览 801回答 1
1回答

慕妹3146593

这个问题在于类的静态代码代码块啥时候执行:在类初始第一个实例的时候或者静态方法被使用之类的(或者其他:??具体看Java官方的语言细究吧)你这个才load了class并没有满足条件&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; urls[0] = new URL("file", null, (new File(System.getProperty("user.dir") + File.separator)).toString());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; URLClassLoader cl = new URLClassLoader(urls);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Class<?> testee = cl.loadClass("Testee");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Constructor<?> constructor = testee.getConstructor();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Object beanObj = constructor.newInstance();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;就可以了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java