繁体   English   中英

加载外部类

[英]Load external classes

我正在尝试在我的项目中加载外部类。 我的想法是加载一个类,然后使用反射来获取其属性和方法。

我正在尝试这样做,但它不起作用

        Path destination = Paths.get("C:\\Project\\src\\com\\test\\TestLauncher.java");

        URL[] classUrls = new URL[]{ new File(destination.subpath(0, destination.getNameCount()).toString()).toURL() };

        URLClassLoader ucl = new URLClassLoader(classUrls);

        Class<?> beanClass = ucl.loadClass("com.test.TestLauncher");

当您尝试在同一个项目中的文件中使用此代码时,此代码很有用,但当类不在同一个项目中时它不起作用,在这种情况下,我收到以下错误:

java.lang.ClassNotFoundException: com.test.FileToLoad at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at urlLoader。 Play.main(Play.java:26)

首先,您需要编译 .java 文件并尝试加载 .class 文件。

你也得到TestLauncher.java文件,但尝试加载com.test.FileToLoad

尝试这个:

// path to base directory with classes (exclude packages)
File file = new File("C:\\Project\\target\\classes");
URL[] classUrls = new URL[]{ file.toURI().toURL() };
URLClassLoader ucl = new URLClassLoader(classUrls);
Class<?> beanClass = ucl.loadClass("com.test.TestLauncher");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM