Java 从jar文件运行方法,它们扩展了一个类
我是否可以从am插件运行方法,如onEnable(),我的脚本无法运行:( 扩展类:Java 从jar文件运行方法,它们扩展了一个类,java,Java,我是否可以从am插件运行方法,如onEnable(),我的脚本无法运行:( 扩展类: package de.R3N3PDE.X.API; import de.R3N3PDE; public class JavaPlugin{ Server server; public ServerManager getServer(){ return new ServerManager(server); } public ServerManager setSe
package de.R3N3PDE.X.API;
import de.R3N3PDE;
public class JavaPlugin{
Server server;
public ServerManager getServer(){
return new ServerManager(server);
}
public ServerManager setServer(Server s){
server = s;
}
public PluginLogger getLogger(){
return new PluginLogger(server);
}
}
插件:
package de.R3N3PDE.PluginExample;
import de.R3N3PDE.X.API.JavaPlugin;
public class PluginExample extends JavaPlugin{
public void onEnable(){
getLogger().info("Plugin Enabled!");
}
}
package de.R3N3PDE.PluginExampleName;
import de.CodingDev.X.Server.API.JavaPlugin;
public class PluginExampleName extends JavaPlugin{
@Override
public void onEnable() {
System.out.println("Test");
getLogger().info("Plugin Enabled!");
}
}
插件加载程序:
package de.R3N3PDE.X.Plugin;
imports de.R3N3PDE.X.API.JavaPlugin;
public void initPlugins(){
try {
File loc = new File("plugins");
extendClasspath(loc);
ServiceLoader<JavaPlugin> sl = ServiceLoader.load(JavaPlugin.class);
Iterator<JavaPlugin> apit = sl.iterator();
while (apit.hasNext()){;
JavaPlugin met = apit.next();
//Set the Server
med.setServer(s);
//run void onEnable(); in the Plugin????
}
} catch (IOException e) {
e.printStackTrace();
}
}
我制作了一个新的插件加载程序,但旧版本不起作用:
public void onLoad(){
File loc = new File("plugins");
File[] flist = loc.listFiles(new FileFilter() {
public boolean accept(File file) {return file.getPath().toLowerCase().endsWith(".jar");}
});
URL[] urls = new URL[flist.length];
for (int i = 0; i < flist.length; i++)
urls[i] = flist[i].toURI().toURL();
URLClassLoader ucl = new URLClassLoader(urls);
for(URL url : ucl.getURLs()){
s.getLogger().info("PluginLoader", "Found Plugin: " + url.getFile());
}
ServiceLoader<JavaPlugin> sl = ServiceLoader.load(JavaPlugin.class, ucl);
Iterator<JavaPlugin> apit = sl.iterator();
while (apit.hasNext()){
s.getLogger().info("PluginLoader", "Loading Plugin");
apit.next().onEnable();
}
}
public void onLoad(){
File loc=新文件(“插件”);
文件[]flist=loc.listFiles(新文件过滤器(){
公共布尔接受(文件文件){return File.getPath().toLowerCase().endsWith(“.jar”);}
});
URL[]URL=新URL[flist.length];
for(int i=0;i
日志:
[日志][02.11.2013 15:26:09][插件加载程序][信息]加载插件
[LOG][02.11.2013 15:26:09][PluginLoader][INFO]找到了插件:/C:/Users/René/Desktop/Server/plugins/CommandLogger.jar用抽象的方法将类抽象化怎么样
public abstract class JavaPlugin{
Server server;
public ServerManager getServer(){
return new ServerManager(server);
}
public ServerManager setServer(Server s){
server = s;
}
public PluginLogger getLogger(){
return new PluginLogger(server);
}
public abstract void onEnable();
}
然后必须在子类中实现onEnable方法。
然后可以调用扩展JavaPlugin的任何动态生成的子类的onEnable方法
第二种方法是在Javaplugin中实现onEnable方法,然后在扩展类中重写该方法
public class JavaPlugin {
...
public void onEnable(){
getLogger().info("JavaPlugin onEnable default implementation!");
}
}
在您的PluginExample文件中:
public class PluginExample extends JavaPlugin{
@Override
public void onEnable(){
getLogger().info("Plugin Enabled!");
}
}
met
与med
相同吗?是拼写错误还是我遗漏了什么?是的,met与med相同,是拼写错误“PluginExample”是一个示例类,类名为dynamiclycheck out new suggestions查看顶部的问题后:=================================================================================编辑: