Fix library loading on Windows when not using a JAR

This commit is contained in:
Cameron Gutman
2013-12-28 20:05:38 -05:00
parent 668402c336
commit 331c6c9332
2 changed files with 14 additions and 9 deletions

View File

@@ -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();
}

View File

@@ -11,6 +11,8 @@ public class LibraryHelper {
private static final HashSet<String> avcDependencies = new HashSet<String>();
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 {