Native Bibliotheken reorganisiert

thobaben_serialize
Harald Wolff 2016-04-01 22:41:34 +02:00
parent 29188d7adb
commit 28920e2286
8 changed files with 0 additions and 135 deletions

Binary file not shown.

View File

@ -1,135 +0,0 @@
package org.hwo.nativeloader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream.GetField;
import java.io.OutputStream;
import javax.management.RuntimeErrorException;
import org.hwo.os.OsDetect;
import org.hwo.os.OsDetect.Bitness;
import org.hwo.os.OsDetect.OsType;
public class NativeLoader {
private static boolean patchedLinux = false;
private static String calculateLibraryName(String libName){
String platformLibName;
if (OsDetect.getBitness()==Bitness.B32){
libName = libName + "32";
}
if (OsDetect.getBitness()==Bitness.B64){
libName = libName + "64";
}
switch (OsDetect.getOperatingSystem())
{
case LINUX:
platformLibName = String.format("lib%s.so",libName);
break;
case OSX:
platformLibName = String.format("lib%s.dylib",libName);
break;
case WINDOWS:
platformLibName = String.format("%s.dll",libName);
break;
default:
throw new RuntimeException("Betriebssystem nicht unterst<73>tzt!");
}
return platformLibName;
}
public static boolean tryLoad(String libName){
try
{
System.loadLibrary(libName);
return true;
} catch (UnsatisfiedLinkError e)
{
System.err.println("");
System.err.println("");
System.err.println("** tryLoad(...) A *****************************");
System.err.println("");
e.printStackTrace();
try
{
System.load(libName);
return true;
} catch (UnsatisfiedLinkError ee)
{
System.err.println("");
System.err.println("");
System.err.println("** tryLoad(...) B *****************************");
System.err.println("");
ee.printStackTrace();
}
}
return false;
}
public static void loadLibrary(String libName)
{
//if (OsDetect.getOperatingSystem()==OsType.LINUX){
// System.err.println("Linux erkannt. Patche java.library.path");
System.setProperty("java.library.path",String.format(".:%s",System.getProperty("java.library.path")));
//}
if (tryLoad(libName))
return;
String platformLibName = calculateLibraryName(libName);
if (tryLoad(platformLibName))
return;
if (tryLoad(new File("").getAbsolutePath() + File.separator + platformLibName))
return;
String resourcePath;
System.err.println(String.format("NativeLoader: Platform dependent Name: %s",platformLibName));
resourcePath = "/native/" + platformLibName;
System.err.println(String.format("NativeLoader: Resource name: %s",resourcePath));
InputStream libInputStream = NativeLoader.class.getResourceAsStream(resourcePath);
if (libInputStream == null)
{
System.err.println("Resource wurde nicht gefunden!");
}
try {
File tempLibFile = File.createTempFile("native-", platformLibName);
FileOutputStream fos = new FileOutputStream(tempLibFile);
System.err.println(String.format("Using Temp File: %s",tempLibFile.getAbsoluteFile()));
System.err.println(String.format("Size: %d",libInputStream.available()));
byte[] buffer = new byte[libInputStream.available()];
libInputStream.read(buffer);
fos.write(buffer);
fos.close();
System.err.println(String.format("Loading: %s", tempLibFile.getAbsolutePath()));
System.load(tempLibFile.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}