【问题标题】:Java - IllegalArgumentException when .buildConfiguration() is calledJava - 调用 .buildConfiguration() 时出现 IllegalArgumentException
【发布时间】:2016-02-19 02:31:55
【问题描述】:

所以我为使用 PircBotX 制作的 IRC 机器人设置了一个 INI 文件,现在在 .buildConfiguration() 处引发了 IllegalArgumentException

代码:

public Craftxbot() throws IOException{
    File inicheck = new File("config.ini");
    if(!inicheck.exists()){
        System.out.println("Configuration file not found, Making one.");
        inicheck.createNewFile();
        Wini ini = new Wini(new File("config.ini"));
        ini.add("Config");
        System.out.print("Nickname: ");
        ini.put("Config", "nick", input.next());
        System.out.print("Server Hostname: ");
        ini.put("Config", "serverHostname", input.next());
        System.out.print("Server Port: ");
        ini.put("Config", "serverPort", input.nextInt());
        System.out.print("Default Channel: ");
        ini.put("Config", "defaultChannel", input.next());
        System.out.flush();
    }
    Wini ini = new Wini(new File("config.ini"));
    System.out.print("Nickserv Password: ");
    System.out.flush();
    String nickpass = input.next();
    Configuration<PircBotX> alpha = new Configuration.Builder<PircBotX>()
            .setName(ini.get("Config", "nick"))
            .setLogin("Craftxbot-Dev")
            .setNickservPassword(nickpass)
            .setAutoNickChange(true)
            .setServerHostname(ini.get("Config", "serverHostname"))
            .setServerPort(ini.get("Config", "serverPort", int.class))
            .addAutoJoinChannel(ini.get("Config", "defaultChannel"))
            .addListener(new Commands())
            .addListener(new EventHandler())
            .addListener(new PrivMsg())
            .buildConfiguration();

堆栈跟踪:

Exception in thread "main" java.lang.IllegalArgumentException: Must specify name
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:93)
at org.pircbotx.Configuration.<init>(Configuration.java:128)
at org.pircbotx.Configuration$Builder.buildConfiguration(Configuration.java:589)
at tk.craftxbox.bot.Craftxbot.<init>(Craftxbot.java:61)
at tk.craftxbox.bot.Craftxbot.main(Craftxbot.java:27)

在添加 INI 文件之前,它运行良好且符合预期

【问题讨论】:

    标签: java ini4j


    【解决方案1】:

    您的 ini.get 调用可能返回 null。造成这种情况的一个原因是您在写完所有值之后永远不会ini.store()。如果你看这里的例子:http://ini4j.sourceforge.net/tutorial/OneMinuteTutorial.java.html你必须在写值之后调用store()

    【讨论】:

    • 谢谢!在教程中没有看到。
    猜你喜欢
    • 2020-09-22
    • 2012-08-21
    • 2014-08-18
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 2018-08-24
    相关资源
    最近更新 更多