У меня есть приложение Java (работающее под Oracle Java, но та же проблема возникает с OpenJDK), которое использует netty-tcnative
. Он работает без проблем в macOS, но когда я пытаюсь запустить его в Ubuntu 17.04, я получаю следующее исключение:
SEVERE: ALPN not available for JDK SSL/TLS engine
io.vertx.core.VertxException: ALPN not available for JDK SSL/TLS engine
at io.vertx.core.net.impl.SSLHelper.resolveEngineOptions(SSLHelper.java:89)
at io.vertx.core.net.impl.SSLHelper.<init>(SSLHelper.java:150)
at io.vertx.grpc.VertxChannelBuilder.build(VertxChannelBuilder.java:148)
at uk.ashleybye.grpc.tls.Client.start(Client.kt:22)
at io.vertx.core.AbstractVerticle.start(AbstractVerticle.java:111)
at io.vertx.core.impl.DeploymentManager.lambda$doDeploy$8(DeploymentManager.java:434)
at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:337)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:445)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
at java.lang.Thread.run(Thread.java:748)
netty-tcnative
требует openssl >= 1.0.2
и переносимая среда выполнения Apache. У меня есть:
$ openssl version
OpenSSL 1.0.2g 1 Mar 2016
$ apt show libapr1
Package: libapr1
Version: 1.5.2-5
Насколько я могу судить, правильное расположение библиотеки для libapr: /usr/lib/x86_64-linux-gnu
:
$ dpkg -L libapr1
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libapr-1.so.0.5.2
/usr/share
/usr/share/doc
/usr/share/doc/libapr1
/usr/share/doc/libapr1/changelog.Debian.gz
/usr/share/doc/libapr1/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libapr1
/usr/lib/x86_64-linux-gnu/libapr-1.so.0
И я попытался добавить библиотеку в LD_LIBRARY_PATH
(как уже упоминалось Вот) путем создания /etc/ld.so.conf.d/libapr.conf
и добавление /usr/lib/x86_64-linux-gnu
. Бег sudo ldconfig
, и по-прежнему ничего. Даже добавление его к стандартному пути ничего не дает.
Насколько я могу судить, я выполнил все инструкции, но это все еще не работает. Что еще больше сбивает с толку, так это то, что он отлично работает в другой ОС. Это ничего не стоит netty-tcnative
требуются двоичные файлы для конкретной платформы, которые я обнаруживаю с помощью Google osdetector
плагин для gradle. Это обнаружило двоичный файл linux. Однако даже если я использую netty-tcnative-boring-static
Я все еще получаю то же исключение. Смена версий тоже не помогает (хотя версия 2x не работала на maxOS, но с 1.1.33.Fork26 работает). Я даже установил libnetty-tcnative-java
и -jni
пакеты от apt, но все равно безуспешно.
Я в полной растерянности, и мне действительно нужна помощь, чтобы заставить это работать. Какие-либо предложения?