diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bac836e..675d897 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -193,6 +193,8 @@ if (BUILDSWIG) add_subdirectory (python) endif () if (BUILDSWIGJAVA) + configure_file (${CMAKE_CURRENT_SOURCE_DIR}/java/manifest.txt.in + ${CMAKE_CURRENT_BINARY_DIR}/java/manifest.txt) add_subdirectory (java) endif () if (BUILDSWIGNODE) diff --git a/src/java/CMakeLists.txt b/src/java/CMakeLists.txt index 3b63179..fbcbe6e 100644 --- a/src/java/CMakeLists.txt +++ b/src/java/CMakeLists.txt @@ -33,7 +33,7 @@ add_custom_command (TARGET mraajava COMMAND cmake -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/mraa COMMAND ${JAVAC} *.java -d ${CMAKE_CURRENT_BINARY_DIR} COMMAND cmake -E echo "Creating jar" - COMMAND ${JAR} cvf mraa.jar mraa + COMMAND ${JAR} cvmf manifest.txt mraa.jar mraa ) if (DOXYGEN_FOUND) diff --git a/src/java/manifest.txt.in b/src/java/manifest.txt.in new file mode 100644 index 0000000..a1e98ef --- /dev/null +++ b/src/java/manifest.txt.in @@ -0,0 +1,7 @@ +Manifest-version: 1.0 + +Name: mraa/ +Specification-Title: mraa +Specification-Version: @VERSION_SHORT@ +Package-Title: mraa +Package-Version: @VERSION_SHORT@ diff --git a/src/java/mraajava.i b/src/java/mraajava.i index 86abc53..52d8e5f 100644 --- a/src/java/mraajava.i +++ b/src/java/mraajava.i @@ -96,5 +96,34 @@ class Spi; System.err.println("Native code library failed to load. \n" + e); System.exit(1); } + + String javaAPIVersion = mraa.class.getPackage().getSpecificationVersion(); + String nativeAPIVersion = mraa.getVersion().substring(1); + + String javaMajor = javaAPIVersion.substring(0, javaAPIVersion.indexOf('.')); + String nativeMajor = nativeAPIVersion.substring(0, nativeAPIVersion.indexOf('.')); + + if(Integer.parseInt(javaMajor) < Integer.parseInt(nativeMajor)){ + System.err.println("Java library is out of date. Please update the Java library."); + System.err.println("Native library version is " + nativeAPIVersion + ". Java library version is " + javaAPIVersion + "."); + System.exit(1); + } + if(Integer.parseInt(javaMajor) > Integer.parseInt(nativeMajor)){ + System.err.println("Native library is out of date. Please update the Native library."); + System.err.println("Native library version is " + nativeAPIVersion + ". Java library version is " + javaAPIVersion + "."); + System.exit(1); + } + + String javaMinor = javaAPIVersion.substring(javaMajor.length() + 1, javaAPIVersion.indexOf('.', javaMajor.length() + 1)); + String nativeMinor = nativeAPIVersion.substring(nativeMajor.length() + 1, nativeAPIVersion.indexOf('.', nativeMajor.length() + 1)); + + if(Integer.parseInt(javaMinor) < Integer.parseInt(nativeMinor)){ + System.err.println("Java library is out of date. Please consider updating the Java library."); + System.err.println("Native library version is " + nativeAPIVersion + ". Java library version is " + javaAPIVersion + "."); + } + if(Integer.parseInt(javaMinor) > Integer.parseInt(nativeMinor)){ + System.err.println("Native library is out of date. Please consider updating the Native library."); + System.err.println("Native library version is " + nativeAPIVersion + ". Java library version is " + javaAPIVersion + "."); + } } %}