【发布时间】:2018-02-07 05:12:17
【问题描述】:
我正在尝试组装一个独立版本的 Undertow,但我遇到了 JAR 依赖地狱。我终于到达了以下 JAR 列表,但我真正想要的是 Undertow 的独立包,其中包含所有依赖项,尽管它声称是“轻量级”和“可嵌入”,但我似乎无法在任何地方找到它“Undertow 可以嵌入到应用程序中,也可以通过几行代码独立运行。”但是,在包含依赖项之后,真正的权重似乎是很多代码(大约 6 MiB)。这甚至不包括一些明显或记录在案的可选包,如 JBoss 模块和 OSGI 等。
撇开大小不谈,我在类路径上使用列出的 JAR 的所有东西都可以使用,但是相同 JAR 的捆绑包不起作用;我在尝试启动服务器时遇到错误:XNIO001001: No XNIO provider found。
谁能指出我忽略的东西?还是我只是对什么是“轻量级”和“可嵌入”有一个老式的定义?
JAR 被捆绑:
- alpn-api-1.1.3.v20160715.jar
- jboss-logging-3.3.1.Final.jar
- jboss-logmanager-2.0.9.Final.jar
- jboss-logging-annotations-2.1.0.Final.jar
- jboss-threads-2.3.0.Final.jar
- undertow-core-2.0.0.Beta1.jar
- wildfly-client-config-1.0.0.Final.jar
- wildfly-common-1.3.0.Final.jar
- xnio-api-3.6.0.Final.jar
- xnio-nio-3.6.0.Final.jar
【问题讨论】:
-
jboss-logging-annotations-2.1.0.Final.jar仅在编译时使用,因此不需要。jboss-logmanager-2.0.9.Final.jar也应该是可选的。 JBoss Logging 应该适用于任何日志管理器。alpn-api-1.1.3.v20160715.jar可能只需要 HTTP/2。 -
@James:是的,我就是这么想的,但是如果 ProGuard 不能解析所有引用的类,它就会出错。但我会尝试更多的放弃那些。 WRT 日志记录,我一点也不想要;它嵌入的系统只记录到控制台,我想要一个简单的记录器来做到这一点。可能要写一个。
-
jboss-logging 只是一个外观,所以它会写入任何日志管理器。我猜 ProGuard 必须检查源?这是我需要 jboss-logging-annotations 的唯一原因。注释甚至在运行时都不可用。
-
@James,实际上 PG 使用 JAR 中的二进制文件,而不是源代码。注释必须存在于类中才能知道它们。
-
XNIO JAR 中存在注释。