From e8eb6297e02fc5b2abe40f8e3d3117dc71f14ee6 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 28 Dec 2013 20:05:38 -0500 Subject: [PATCH] Fix library loading on Windows when not using a JAR --- src/com/limelight/Limelight.java | 6 +----- src/com/limelight/binding/LibraryHelper.java | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/com/limelight/Limelight.java b/src/com/limelight/Limelight.java index 903daa1..d64c746 100644 --- a/src/com/limelight/Limelight.java +++ b/src/com/limelight/Limelight.java @@ -100,11 +100,7 @@ public class Limelight implements NvConnectionListener { } } - try { - LibraryHelper.prepareNativeLibraries(); - } catch (IOException e) { - // This is expected to fail when not in a JAR - } + LibraryHelper.prepareNativeLibraries(); createFrame(); } diff --git a/src/com/limelight/binding/LibraryHelper.java b/src/com/limelight/binding/LibraryHelper.java index 827b461..0eb7062 100644 --- a/src/com/limelight/binding/LibraryHelper.java +++ b/src/com/limelight/binding/LibraryHelper.java @@ -11,6 +11,8 @@ public class LibraryHelper { private static final HashSet avcDependencies = new HashSet(); private static final boolean needsDependencyExtraction; private static final String libraryExtractionFolder; + + private static boolean librariesExtracted = false; static { needsDependencyExtraction = System.getProperty("os.name", "").contains("Windows"); @@ -35,7 +37,7 @@ public class LibraryHelper { } public static void loadNativeLibrary(String libraryName) { - if (needsDependencyExtraction && avcDependencies.contains(libraryName)) { + if (librariesExtracted && avcDependencies.contains(libraryName)) { System.load(libraryExtractionFolder + File.separatorChar + System.mapLibraryName(libraryName)); } else { @@ -43,14 +45,21 @@ public class LibraryHelper { } } - public static void prepareNativeLibraries() throws IOException { + public static void prepareNativeLibraries() { if (!needsDependencyExtraction) { return; } - for (String dependency : avcDependencies) { - extractNativeLibrary(dependency); + try { + for (String dependency : avcDependencies) { + extractNativeLibrary(dependency); + } + } catch (IOException e) { + // This is expected if this code is not running from a JAR + return; } + + librariesExtracted = true; } private static void extractNativeLibrary(String libraryName) throws IOException {