这是我用于IRC课程的代码。
import org.jibble.pircbot.*;
public class IRCBotMain {
public static void main(String[] args) throws Exception {
IRCBot bot = new IRCBot();
bot.setVerbose(true);
bot.connect("irc.freenode.net");
bot.joinChannel("#pircbot");
}}
但是当我尝试做的时候
public class Main extends JavaPlugin {
@Override
public void onEnable() {
this.getLogger().log(Level.INFO, "Loading up!");
IRCBotMain.main(null);
}
}
这在另一个类中,编译器因Unhandled exception type Exception
而失败。
谢谢大家,我解决了这个问题,但是在导出并运行之后。我收到此错误: https://pastebin.com/ZdDxYK2k 我已经遵循了这个(https://bukkit.org/threads/pircbot-how-to-install-import.132337/),但却发生了这种情况。 顺便说一句,我使用的是pircbot,而不是pircbotx。
答案 0 :(得分:1)
您尝试调用的IRCBotMain.main()
方法被声明为抛出Exception
,因此无论您在何处调用该方法,都必须:
或者
例如:
@Override
public void onEnable() {
try {
this.getLogger().log(Level.INFO, "Loading up!");
IRCBotMain.main(null);
} catch (Exception ex) {
// respond to this exception by logging it or wrapping it in another exception and re-throwing etc
}
}
或者
@Override
public void onEnable() throws Exception {
this.getLogger().log(Level.INFO, "Loading up!");
IRCBotMain.main(null);
}
注意:第二种方法可能不是跑步者,因为重写的onEnable()
方法可能不会被声明为抛出异常。
这些将避免您遇到的编译错误,但是从另一个类调用main方法有点不寻常。通常,main
方法是Java应用程序的入口点,因此可以通过Java应用程序的任何启动来调用它。您在问题中使用的调用模式表明应用程序的一部分通过main
方法调用另一部分。通过在IRCBotMain
上调用非静态非主方法来做到这一点会更常见,例如
IRCBotMain bot = new IRCBotMain();
bot.run();
答案 1 :(得分:0)
在另一个类中调用main方法是不好的,只有你需要做的就是在onEnable的方法签名上添加'抛出异常。
public class Main extends JavaPlugin
{
@Override
public void onEnable throws Exception()
{
this.getLogger().log(Level.INFO, "Loading up!");
IRCBotMain.main(null);
}
}