summaryrefslogtreecommitdiff
path: root/java/src/com/zerotierone/sdk/Node.java
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-04-30 21:50:05 -0700
committerGrant Limberg <glimberg@gmail.com>2015-04-30 21:50:05 -0700
commit75d71370258b102144a1f5941b64f35ddf815a8c (patch)
tree84291d5b0e39b63f6e056cdd4f5579933a2d1827 /java/src/com/zerotierone/sdk/Node.java
parent52df59c55299419feb16a5daeed01389f4fafc73 (diff)
downloadinfinitytier-75d71370258b102144a1f5941b64f35ddf815a8c.tar.gz
infinitytier-75d71370258b102144a1f5941b64f35ddf815a8c.zip
added a class I found to load JNI code from within JAR files on non-android platforms.
That doesn't come for free, unlike android.
Diffstat (limited to 'java/src/com/zerotierone/sdk/Node.java')
-rw-r--r--java/src/com/zerotierone/sdk/Node.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/java/src/com/zerotierone/sdk/Node.java b/java/src/com/zerotierone/sdk/Node.java
index 911e83d3..6b4a8729 100644
--- a/java/src/com/zerotierone/sdk/Node.java
+++ b/java/src/com/zerotierone/sdk/Node.java
@@ -31,13 +31,31 @@ import java.nio.ByteBuffer;
import java.lang.Long;
import java.net.InetSocketAddress;
import java.util.ArrayList;
+import java.io.IOException;
/**
* A ZeroTier One node
*/
public class Node {
static {
- System.loadLibrary("ZeroTierOneJNI");
+ try {
+ System.loadLibrary("ZeroTierOneJNI");
+ } catch (UnsatisfiedLinkError e) {
+ try {
+ if(System.getProperty("os.name").startsWith("Windows")) {
+ System.out.println("Arch: " + System.getProperty("sun.arch.data.model"));
+ if(System.getProperty("sun.arch.data.model").equals("64")) {
+ NativeUtils.loadLibraryFromJar("/lib/ZeroTierOneJNI_win64.dll");
+ } else {
+ NativeUtils.loadLibraryFromJar("/lib/ZeroTierOneJNI_win32.dll");
+ }
+ } else {
+ // TODO: Mac
+ }
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ }
+ }
}
private static final String TAG = "NODE";