我在java中运行时调用类时遇到问题 我基本上是一个插件框架
首先打开插件/ Plugins.cfg并将测试解析成地图。 cfg文件中的EX文本 1 = myplugin 2 = plugin2
(每个插件的主要类是:插件。(插件名称).main.class)
你可以看到它从地图加载每个值并试图运行它的主类
public static void loadPlugins()
{
int x = hackers.core.startup.InitializeGame.map.size();
for (int i = 1; i<=x;i++)
{
String className = hackers.core.startup.InitializeGame.map.get(i + "");
File file = new File(System.getProperty("user.dir") + File.separator + "plugins" + File.separator + className);
URL url = null;
try {
url = file.toURI().toURL();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
URL[] urls = new URL[]{url};
ClassLoader cl = new URLClassLoader(urls);
try {
Class cls = cl.loadClass("plugin." + className + ".main");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(className);
}
}
Class cls = cl.loadClass("plugin." + className + ".main");
^ line给出了错误:java.lang.ClassNotFoundException:plugin.myplugin.main
任何人都知道这里有什么不对吗?或者有任何建议,我已经查看了它的API,但它让我感到困惑,缺乏文档。
答案 0 :(得分:0)
您的file
未指向有效的类或jar文件。
调试以下行;您会注意到它的路径不是文件系统中的现有路径。
File file = new File(System.getProperty("user.dir") + File.separator + "plugins" + File.separator + className);
我认为您忘记在.class
中加入className
。