Fix build for JDK 8 and force build into JAR

This commit is contained in:
Mikhail Lobotskiy
2024-08-02 15:58:13 +04:00
parent 3221d20d81
commit 8d5fc7d6ca
2 changed files with 15 additions and 7 deletions

View File

@ -1,10 +1,17 @@
import os
import argparse
# NOTE: In JDK 8 and earlier, `javac` does not create the directories specified in the -d option if they do not already exist
# So we need to create them manually
def makedirs(dir):
if not os.path.exists(dir):
os.makedirs(dir)
return
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Build Java wrapper for docbuilder library')
parser.add_argument('-H', '--headers', action='store_true', help='Generate C++ JNI header files')
parser.add_argument('-jar', '--jar', action='store_true', help='Build into JAR archive')
parser.add_argument('-n', '--no-jar', dest='no_jar', action='store_true', help='Build only classes without JAR archive')
args = parser.parse_args()
file_dir = os.path.dirname(os.path.realpath(__file__));
@ -20,12 +27,13 @@ if __name__ == "__main__":
# BUILD
classes_dir = file_dir + '/build/classes'
makedirs(classes_dir + '/docbuilder/utils')
headers_dir = file_dir + '/src/jni'
# build all main Java classes
# build all Java classes
os.system('javac -d ' + classes_dir + (' -h ' + headers_dir if args.headers else '') + java_files)
# PACKING TO JAR
if args.jar:
if not args.no_jar:
os.chdir(classes_dir)
class_files = ''
for file in os.listdir('docbuilder'):
@ -33,4 +41,5 @@ if __name__ == "__main__":
class_files += ' docbuilder/' + file
class_utils_file = ' docbuilder/utils/NativeLibraryLoader.class'
class_files += class_utils_file
makedirs('../libs')
os.system('jar -cvf ../libs/docbuilder.jar ' + class_files)

View File

@ -1,6 +1,5 @@
import os
import argparse
import platform
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Build and run the test example for docbuilder Java wrapper')
@ -14,9 +13,9 @@ if __name__ == "__main__":
if args.builder_dir:
builder_dir = args.builder_dir
os.system('java -cp ../build/classes' + os.pathsep + 'build/classes -Djava.library.path=\"' + builder_dir + '\" Program')
os.system('java -cp ../build/libs/docbuilder.jar' + os.pathsep + 'build/classes -Djava.library.path=\"' + builder_dir + '\" Program')
else:
os.system('javac -d build/classes -cp ../build/classes ' + java_file)
os.system('javac -d build/classes -cp ../build/libs/docbuilder.jar ' + java_file)
print('Program was built successfully')
print('Run it with: java -cp \"../build/classes' + os.pathsep + 'build/classes\" -D\"java.library.path\"=\"path_to_docbuilder\" Program')
print('Run it with: java -cp \"../build/libs/docbuilder.jar' + os.pathsep + 'build/classes\" -D\"java.library.path\"=\"path_to_docbuilder\" Program')
print('Or just run: python make_test.py --run \"path_to_docbuilder\"')