I added the conscrypt client to my app's dependencies, and now this is the stack trace:

03-25 12:55:02.948 28205 28344 E nostr.client.Client: null

03-25 12:55:02.948 28205 28344 E nostr.client.Client: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: No Client ALPNProcessors!

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.client.util.InputStreamResponseListener.get(InputStreamResponseListener.java:219)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at nostr.ws.Connection.getRelayInformation(Connection.java:122)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at nostr.ws.Connection.updateRelayMetadata(Connection.java:134)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at nostr.client.Client.updateRelayInformation(Client.java:285)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at nostr.client.Client.openRelay(Client.java:210)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at nostr.client.Client.lambda$init$5(Client.java:265)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at nostr.client.Client.$r8$lambda$TJeOxInLs9kBKY3hUg_Yv7ULkvU(Unknown Source:0)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at nostr.client.Client$$ExternalSyntheticLambda7.call(D8$$SyntheticClass:0)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.util.concurrent.FutureTask.run(FutureTask.java:264)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.Thread.run(Thread.java:1012)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: Caused by: java.lang.IllegalStateException: No Client ALPNProcessors!

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.(ALPNClientConnectionFactory.java:49)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.client.dynamic.HttpClientTransportDynamic.newConnection(HttpClientTransportDynamic.java:202)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.io.ssl.SslClientConnectionFactory.newConnection(SslClientConnectionFactory.java:125)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.io.ClientConnector$Configurator.newConnection(ClientConnector.java:646)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.io.ClientConnector.newConnection(ClientConnector.java:530)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.io.ClientConnector$ClientSelectorManager.newConnection(ClientConnector.java:562)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.io.ManagedSelector.createEndPoint(ManagedSelector.java:384)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.io.ManagedSelector$CreateEndPoint.run(ManagedSelector.java:1076)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:934)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1078)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: ... 1 more

03-25 12:55:02.948 28205 28344 E nostr.client.Client: Suppressed: java.lang.UnsatisfiedLinkError: dlopen failed: library "libconscrypt_openjdk_jni-linux-aarch_64.so" not found

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.Runtime.loadLibrary0(Runtime.java:1082)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.Runtime.loadLibrary0(Runtime.java:1003)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.System.loadLibrary(System.java:1765)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:54)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.reflect.Method.invoke(Native Method)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader$1.run(NativeLibraryLoader.java:297)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader$1.run(NativeLibraryLoader.java:289)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.security.AccessController.doPrivileged(AccessController.java:46)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.loadLibraryFromHelperClassloader(NativeLibraryLoader.java:289)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:262)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.load(NativeLibraryLoader.java:162)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:106)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeCryptoJni.init(NativeCryptoJni.java:50)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeCrypto.(NativeCrypto.java:64)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.OpenSSLProvider.(OpenSSLProvider.java:58)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.OpenSSLProvider.(OpenSSLProvider.java:51)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.OpenSSLProvider.(OpenSSLProvider.java:47)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.alpn.conscrypt.client.ConscryptClientALPNProcessor.init(ConscryptClientALPNProcessor.java:38)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.lambda$new$0$org-eclipse-jetty-alpn-client-ALPNClientConnectionFactory(ALPNClientConnectionFactory.java:69)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory$$ExternalSyntheticLambda0.accept(D8$$SyntheticClass:0)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.util.ServiceLoaderSpliterator.tryAdvance(ServiceLoaderSpliterator.java:46)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.util.Spliterator.forEachRemaining(Spliterator.java:332)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:792)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.(ALPNClientConnectionFactory.java:52)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: ... 10 more

03-25 12:55:02.948 28205 28344 E nostr.client.Client: Suppressed: java.lang.UnsatisfiedLinkError: dlopen failed: library "libconscrypt_openjdk_jni-linux-aarch_64.so" not found

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.Runtime.loadLibrary0(Runtime.java:1082)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.Runtime.loadLibrary0(Runtime.java:1003)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.System.loadLibrary(System.java:1765)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:54)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.loadLibraryFromCurrentClassloader(NativeLibraryLoader.java:318)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:273)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: ... 24 more

03-25 12:55:02.948 28205 28344 E nostr.client.Client: Suppressed: java.lang.UnsatisfiedLinkError: dlopen failed: library "libconscrypt_openjdk_jni.so" not found

03-25 12:55:02.948 28205 28344 E nostr.client.Client: ... 34 more

03-25 12:55:02.948 28205 28344 E nostr.client.Client: Suppressed: java.lang.UnsatisfiedLinkError: dlopen failed: library "libconscrypt_openjdk_jni.so" not found

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.Runtime.loadLibrary0(Runtime.java:1082)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.Runtime.loadLibrary0(Runtime.java:1003)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.System.loadLibrary(System.java:1765)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:54)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.loadLibraryFromCurrentClassloader(NativeLibraryLoader.java:318)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:273)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: ... 24 more

03-25 12:55:02.948 28205 28344 E nostr.client.Client: Suppressed: java.lang.UnsatisfiedLinkError: dlopen failed: library "libconscrypt.so" not found

03-25 12:55:02.948 28205 28344 E nostr.client.Client: ... 34 more

03-25 12:55:02.948 28205 28344 E nostr.client.Client: Suppressed: java.lang.UnsatisfiedLinkError: dlopen failed: library "libconscrypt.so" not found

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.Runtime.loadLibrary0(Runtime.java:1082)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.Runtime.loadLibrary0(Runtime.java:1003)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at java.lang.System.loadLibrary(System.java:1765)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:54)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.loadLibraryFromCurrentClassloader(NativeLibraryLoader.java:318)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: at org.conscrypt.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:273)

03-25 12:55:02.948 28205 28344 E nostr.client.Client: ... 24 more

Reply to this note

Please Login to reply.

Discussion

Please open an issue in github with all the information. I'll happily take a look later.

The issue occurs while I'm fetching the relay Metadata. I need the information because I want to know which nips the relay supports.

I use jetty's httpclient for establishing the remote http connection, and your code does not seem to like it.

Looking at the stack trace, I see it cannot link several native libraries, likely because you're on Android.

I don't think the library can be used on android for the above reasons, and to make it work, I would have to ditch jetty, and use the jdk's native libraries for http and websocket connections. This would be a non trivial change that would take time to develop, but I'll look more into it.

I'm interested in transitioning to jdk's native libraries and willing to work on it.

Great. We're working on the develop branch. Check out that branch to add your changes, then submit a PR.