【问题标题】:Undertow Invalid Logger InterfaceUndertow 无效的记录器接口
【发布时间】:2017-12-05 12:30:50
【问题描述】:

我正在尝试使用undertow.io API 启动一个简单的 api 服务器。这是我的启动代码。

this.server = Undertow.builder().addHttpListener(this.port, this.host).setHandler(new HttpHandler() {
        @Override
        public void handleRequest(HttpServerExchange exchange) throws Exception {
            exchange.getResponseSender().send("Hello World");
        }
    }).build();
   this.server.start();

我会收到此错误:

    [22:26:46] [Server thread/ERROR]: Error occurred while enabling MWS v1.0-SNAPSHOT (Is it up to date?)
java.lang.ExceptionInInitializerError
    at io.undertow.Undertow.start(Undertow.java:113) ~[?:?]
    at me.ripes.mws.server.ApiServer.startServer(ApiServer.java:30) ~[?:?]
    at me.ripes.mws.MWS.onEnable(MWS.java:20) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:271) ~[spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugin(CraftServer.java:376) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugins(CraftServer.java:326) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.reload(CraftServer.java:750) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.Bukkit.reload(Bukkit.java:540) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.dispatchCommand(CraftServer.java:650) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.dispatchServerCommand(CraftServer.java:636) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at net.minecraft.server.v1_11_R1.DedicatedServer.aM(DedicatedServer.java:437) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:400) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar:git-Spigot-d276ab1-1f6c04c]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
Caused by: java.lang.IllegalArgumentException: Invalid logger interface io.undertow.UndertowLogger (implementation not found in org.bukkit.plugin.java.PluginClassLoader@12cb152a)
    at org.jboss.logging.Logger$1.run(Logger.java:2556) ~[?:?]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_131]
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2529) ~[?:?]
    at org.jboss.logging.Logger.getMessageLogger(Logger.java:2516) ~[?:?]
    at io.undertow.UndertowLogger.<clinit>(UndertowLogger.java:59) ~[?:?]
    ... 19 more

我认为这是 undertow 记录器的问题,但我不知道要修复它。 请帮帮我:)

【问题讨论】:

  • 我发现this message 有同样的问题,reply 表示重新编译修复了它。 This post cmets 一些“糟糕的工作空间内依赖项”破坏了它,并通过禁用 maven 依赖项进行了修复。哪一个有帮助?

标签: java logging minecraft undertow


【解决方案1】:

您的堆栈跟踪包含很多这些内容:~[?:?]。如果您在 jar 上运行 proguard 以缩小和混淆,则可能会删除您需要的记录器接口。禁用 proguard,然后重试。

【讨论】:

    【解决方案2】:

    您是否使用了正确的依赖项?我使用了与官方网站中提到的相同的依赖项,它在 Java 1.8 下对我有用。

    HelloWorldServer.java

    package undertow;
    
    import io.undertow.Undertow;
    import io.undertow.server.HttpHandler;
    import io.undertow.server.HttpServerExchange;
    import io.undertow.util.Headers;
    
    public class HelloWorldServer {
    
        public static void main(final String[] args) {      
            HelloWorldServer helloWorldServer = new HelloWorldServer();
            helloWorldServer.initiateServer();
        }
    
        private void initiateServer() {
    
            this.server = Undertow.builder().addHttpListener(this.port, this.host).setHandler(new HttpHandler() {
                @Override
                public void handleRequest(HttpServerExchange exchange) throws Exception {
                    exchange.getResponseSender().send("Hello World 312");
                }
            }).build();
           this.server.start();
        }
    
        Undertow server = null;
        int port= 8080;
        String host = "localhost";
    }
    

    pom.xml

    <dependencies>
        <dependency>
            <groupId>io.undertow</groupId>
            <artifactId>undertow-core</artifactId>
            <version>1.4.12.Final</version>
        </dependency>
    
        <dependency>
            <groupId>io.undertow</groupId>
            <artifactId>undertow-servlet</artifactId>
            <version>1.4.12.Final</version>
        </dependency>
    
        <dependency>
            <groupId>io.undertow</groupId>
            <artifactId>undertow-websockets-jsr</artifactId>
            <version>1.4.12.Final</version>
        </dependency>
    </dependencies>
    

    控制台输出

    Jul 11, 2017 10:45:33 PM org.xnio.Xnio <clinit>
    INFO: XNIO version 3.3.6.Final
    Jul 11, 2017 10:45:33 PM org.xnio.nio.NioXnio <clinit>
    INFO: XNIO NIO Implementation Version 3.3.6.Final
    

    localhost:8080 打印“Hello World 312”

    【讨论】:

    • 谢谢!但我它不是一个独立的应用程序。它只是 Spigot (Spigotmc.org) 的一个插件
    【解决方案3】:
    Caused by: java.lang.IllegalArgumentException: Invalid logger interface io.undertow.UndertowLogger (implementation not found in org.bukkit.plugin.java.PluginClassLoader@12cb152a)
        at org.jboss.logging.Logger$1.run(Logger.java:2556) ~[?:?]
    

    io.undertow.UndertowLogger 是一个接口,使用jboss.logging 注释之一进行注释。编译接口时,会执行注解处理器,生成记录器实现。

    错误信息的意思是,在运行时,JBoss logger 无法加载实现类。

    如果有问题的类是由您构建的,请检查注释处理器是否在构建期间运行。 Maven 有时会发疯并拒绝运行注释处理器。如果是这样,mvn clean 通常会解决这个问题。

    如果该类是由第三方提供的,您可能会缺少一些依赖项。

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 2017-01-15
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多