我目前正在为服务器开发插件。而在这个插件中,它需要从另一个文件夹中的一个类中调用方法。这是一个例子:
public class LoadSkill{
private void load(String name, String type, CastingSkill cast){
try{
File folder = new File(this.plugin.getDataFolder(), "Skills");
if(!folder.exists())folder.mkdirs();
File[] files = folder.listFiles();
if(files.length>0){
for(File f : files){
String skill = f.getName();
skill = skill.substring(0, skill.length()-4);
if(name.equals(skill)){
URL loadPath = f.toURI().toURL();
URL[] classUrl = new URL[]{loadPath};
ClassLoader cl = new URLClassLoader(classUrl);
Class loadedClass = Class.forName("run.skill.Start", false, cl);
if(cast!=null)loadedClass.getDeclaredMethod(name, CastingSkill.class).invoke(loadedClass.newInstance(), cast);
else loadedClass.getDeclaredMethod(name).invoke(loadedClass.newInstance());
}
return;
}
}
}catch(Exception e){
System.err.println("Error while trying to load skill " + name + "!");
e.printStackTrace();
}
}
}
这将是技能文件夹中的一个 jar 文件。注意:这是不可运行的,这就是它没有 main(String[] args) 方法的原因。此外,这是唯一的课程。是的,路径确实符合上面的要求。
public class Skill implements Castable{
public void Enable(){System.out.println("Enabled")}
public void Cast(){System.out.println("Casting")}
public void StopAllTimers(){System.out.println("Stopped)}
public void AddListener(){System.out.println("Listening")}
}
然而,当我运行这段代码时,我得到一个“ClassNotFoundException”,我不知道为什么。我已经检查了几次,似乎一切都是正确的。我究竟做错了什么?