Migrate to jlibloader 0.2
This commit is contained in:
@@ -10,7 +10,7 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile 'com.github.boukefalos:jlibloader:0.1'
|
compile 'com.github.boukefalos:jlibloader:0.2'
|
||||||
testCompile 'junit:junit:3.8.1'
|
testCompile 'junit:junit:3.8.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +114,8 @@ binaries.withType(SharedLibraryBinary) { binary ->
|
|||||||
jniPom.scopeMappings.mappings.clear()
|
jniPom.scopeMappings.mappings.clear()
|
||||||
}
|
}
|
||||||
def builderTask = binary.tasks.builder
|
def builderTask = binary.tasks.builder
|
||||||
nativeJar.into(project.group.replace('.', '/') + '/' + variantName) { from builderTask.outputFile }
|
def libraryDirectory = project.group.replace('.', '/') + "/${project.archivesBaseName}/${variantName}"
|
||||||
|
nativeJar.into(libraryDirectory) { from builderTask.outputFile }
|
||||||
nativeJar.dependsOn builderTask
|
nativeJar.dependsOn builderTask
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,7 +136,7 @@ mainPom.withXml { provider ->
|
|||||||
def dep = deps.appendNode('dependency')
|
def dep = deps.appendNode('dependency')
|
||||||
dep.appendNode('groupId', 'com.github.boukefalos')
|
dep.appendNode('groupId', 'com.github.boukefalos')
|
||||||
dep.appendNode('artifactId', 'jlibloader')
|
dep.appendNode('artifactId', 'jlibloader')
|
||||||
dep.appendNode('version', '0.1')
|
dep.appendNode('version', '0.2')
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
jar {
|
||||||
|
|||||||
@@ -68,28 +68,6 @@ public class JacobObject {
|
|||||||
return DEBUG;
|
return DEBUG;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads JacobVersion.Properties and returns the value of version in it
|
|
||||||
*
|
|
||||||
* @deprecated use JacobReleaseInfo.getBuildDate() instead.
|
|
||||||
* @return String value of version in JacobVersion.Properties or "" if none
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static String getBuildDate() {
|
|
||||||
return JacobReleaseInfo.getBuildDate();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads JacobVersion.Properties and returns the value of version in it
|
|
||||||
*
|
|
||||||
* @deprecated use JacobReleaseInfo.getBuildVersion() instead.
|
|
||||||
* @return String value of version in JacobVersion.Properties or "" if none
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public static String getBuildVersion() {
|
|
||||||
return JacobReleaseInfo.getBuildVersion();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Very basic debugging function.
|
* Very basic debugging function.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,96 +0,0 @@
|
|||||||
package com.jacob.com;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An interface to the version properties file. This code was removed from
|
|
||||||
* JacobObject because it doesn't belong there.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class JacobReleaseInfo {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* holds the build version as retrieved from the version properties file
|
|
||||||
* that exists in the JAR. This can be retrieved by calling the static
|
|
||||||
* method getBuildVersion()
|
|
||||||
*
|
|
||||||
* @see #getBuildVersion()
|
|
||||||
*/
|
|
||||||
private static String buildVersion = "";
|
|
||||||
/**
|
|
||||||
* holds the build date as retrieved from the version properties file that
|
|
||||||
* exists in the JAR This can be retrieved by calling the static method
|
|
||||||
* getBuildDate()
|
|
||||||
*
|
|
||||||
* @see #getBuildDate()
|
|
||||||
*/
|
|
||||||
private static String buildDate = "";
|
|
||||||
/** the name of the jacob version properties file */
|
|
||||||
private static final String PROPERTY_FILE_NAME = "META-INF/JacobVersion.properties";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads version information from PROPERTY_FILE_NAME that was built as part
|
|
||||||
* of this release.
|
|
||||||
*
|
|
||||||
* @throws IllegalStateException
|
|
||||||
* when it can't find the version properties file
|
|
||||||
*/
|
|
||||||
private static void loadVersionProperties() {
|
|
||||||
Properties versionProps = new Properties();
|
|
||||||
// can't use system class loader cause won't work in JavaWebStart
|
|
||||||
InputStream stream = JacobReleaseInfo.class.getClassLoader()
|
|
||||||
.getResourceAsStream(PROPERTY_FILE_NAME);
|
|
||||||
// This should never happen. This is an attempt to make something work
|
|
||||||
// for WebSphere. They may be using some kind of Servlet loader that
|
|
||||||
// needs an absolute path based search
|
|
||||||
if (stream == null) {
|
|
||||||
stream = JacobReleaseInfo.class.getClassLoader()
|
|
||||||
.getResourceAsStream("/" + PROPERTY_FILE_NAME);
|
|
||||||
}
|
|
||||||
// A report came in that WebSphere had trouble finding the file
|
|
||||||
// so lets trap it. Plus, it's a good idea anyway.
|
|
||||||
if (stream == null) {
|
|
||||||
throw new IllegalStateException(
|
|
||||||
"Can't find "
|
|
||||||
+ PROPERTY_FILE_NAME
|
|
||||||
+ " using JacobReleaseInfo.class.getClassLoader().getResourceAsStream()");
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
versionProps.load(stream);
|
|
||||||
stream.close();
|
|
||||||
buildVersion = (String) versionProps.get("version");
|
|
||||||
buildDate = (String) versionProps.get("build.date");
|
|
||||||
} catch (IOException ioe) {
|
|
||||||
ioe.printStackTrace();
|
|
||||||
System.err.println("Warning! Couldn't load props " + ioe);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* loads PROPERT_FILE_NAME and returns the value of version in it
|
|
||||||
*
|
|
||||||
* @return String value of version in PROPERT_FILE_NAME or "" if none
|
|
||||||
*/
|
|
||||||
public static String getBuildDate() {
|
|
||||||
if (buildDate.equals("")) {
|
|
||||||
loadVersionProperties();
|
|
||||||
}
|
|
||||||
return buildDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* loads PROPERT_FILE_NAME and returns the value of version in it
|
|
||||||
*
|
|
||||||
* @return String value of version in PROPERT_FILE_NAME or "" if none
|
|
||||||
*/
|
|
||||||
public static String getBuildVersion() {
|
|
||||||
if (buildVersion.equals("")) {
|
|
||||||
loadVersionProperties();
|
|
||||||
}
|
|
||||||
return buildVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
package com.jacob.com;
|
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests Library loader architecture methods This test requires that jacob.jar
|
|
||||||
* be compiled and added to the classpath. You will need to refresh the release
|
|
||||||
* directory so that eclipse knows about jacob.jar. Otherwise you will get a
|
|
||||||
* "jar not found" dialog.
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* May need to run with some command line options (including from inside
|
|
||||||
* Eclipse). Look in the docs area at the Jacob usage document for command line
|
|
||||||
* options.
|
|
||||||
*
|
|
||||||
* @author clay_shooter
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class LibraryLoaderTest extends TestCase {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* verify the architecture switches work
|
|
||||||
*/
|
|
||||||
public void testArchitectureVersions() {
|
|
||||||
System.out.println("running on 32Bit? VM"
|
|
||||||
+ LibraryLoader.shouldLoad32Bit());
|
|
||||||
// verify no null pointer is thrown
|
|
||||||
LibraryLoader.shouldLoad32Bit();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* verify LibraryLoader.JACOB_DLL_NAME is read by LibraryLoader
|
|
||||||
*/
|
|
||||||
public void testJacobDllNameSystemProperty() {
|
|
||||||
// this test used to run in the reverse order but that caused
|
|
||||||
// ClassDefNotFound on DEBUG
|
|
||||||
|
|
||||||
// no way to clear a system property once set so lets try setting to
|
|
||||||
// default
|
|
||||||
System.setProperty(LibraryLoader.JACOB_DLL_NAME, LibraryLoader
|
|
||||||
.getPreferredDLLName());
|
|
||||||
try {
|
|
||||||
LibraryLoader.loadJacobLibrary();
|
|
||||||
} catch (UnsatisfiedLinkError ule) {
|
|
||||||
fail("Should have been able to load dll after setting "
|
|
||||||
+ LibraryLoader.JACOB_DLL_NAME + " to "
|
|
||||||
+ LibraryLoader.getPreferredDLLName() + " "
|
|
||||||
+ ule.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// fill with bad dll name and try again
|
|
||||||
System.setProperty(LibraryLoader.JACOB_DLL_NAME, "xxx");
|
|
||||||
try {
|
|
||||||
LibraryLoader.loadJacobLibrary();
|
|
||||||
fail("Should have been unable to load dll with name xxx");
|
|
||||||
} catch (UnsatisfiedLinkError ule) {
|
|
||||||
System.out.println("correctly caught UnsatisfiedLinkError");
|
|
||||||
// yes, this is what we want to see when using a bad name
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verifies that we get a preferred DLL name with X86 since we really only
|
|
||||||
* run the unit tests on 32 bit platforms.
|
|
||||||
*/
|
|
||||||
public void testDLLNameContainsProcessorAndVersion() {
|
|
||||||
System.out.println(LibraryLoader.getPreferredDLLName());
|
|
||||||
if (LibraryLoader.shouldLoad32Bit()) {
|
|
||||||
// we build the package and run the unit tests on X86
|
|
||||||
assertTrue(LibraryLoader.getPreferredDLLName()
|
|
||||||
+ "should have contained "
|
|
||||||
+ LibraryLoader.DLL_NAME_MODIFIER_32_BIT, LibraryLoader
|
|
||||||
.getPreferredDLLName().contains(
|
|
||||||
LibraryLoader.DLL_NAME_MODIFIER_32_BIT));
|
|
||||||
} else {
|
|
||||||
// we build the package and run the unit tests on X86
|
|
||||||
assertTrue(LibraryLoader.getPreferredDLLName()
|
|
||||||
+ "should have contained "
|
|
||||||
+ LibraryLoader.DLL_NAME_MODIFIER_64_BIT, LibraryLoader
|
|
||||||
.getPreferredDLLName().contains(
|
|
||||||
LibraryLoader.DLL_NAME_MODIFIER_64_BIT));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user