ngrok / ngrok-java

Embed ngrok secure ingress into your Java apps with a single line of code.
Other
21 stars 6 forks source link

Example for Gradle #32

Open angusholder opened 8 months ago

angusholder commented 8 months ago

I was trying to use this with Gradle, so added a dependency like I typically would:

implementation("com.ngrok:ngrok-java-native:0.4.0")

This appeared to work correctly, however when I started the program, I got an obscure NullPointerException, which turned out to be because the ngrok_java.dll file was missing. I eventually worked out that I was missing a "classifier", like so:

implementation("com.ngrok:ngrok-java-native:0.4.0:windows-x86_64")

and this solved it. Maybe you could add a Gradle example to the README too?

I also have a question: how can I make a program that supports multiple platforms? ie: a single .jar file containing the native binaries for multiple platforms. I tried listing multiple classifiers like this

implementation("com.ngrok:ngrok-java-native:0.4.0:windows-x86_64")
implementation("com.ngrok:ngrok-java-native:0.4.0:linux-android-aarch_64")

but it gives a compile error due to duplicate classes.

nikolay-ngrok commented 8 months ago

Hello @angusholder ,

Thanks for reporting this issue. I've created a PR #33 with update to the README.

As for the second part - I'll have to experiment a bit, but potentially you would need repackage our multiple classified jars into a single one and potentially rewrite the native loader. We have a task on the backlog to create a multi-platform jar, but we haven't completed it yet.