我目前正致力于服务器的插件。在这个插件中,它需要从另一个文件夹中的类调用方法。这是一个例子:
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”,我不知道为什么。我已经检查了几次,似乎一切都是正确的。我做错了什么?
答案 0 :(得分:0)
你必须提到几点:
如果使用某个javaEE服务器,则应指定问题中的哪一个。