mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
Add docbuilder.utils.Utils class to edit PATH on Windows
This commit is contained in:
@ -15,10 +15,15 @@ if __name__ == "__main__":
|
||||
if file.endswith('.java'):
|
||||
java_files += ' docbuilder/' + file
|
||||
|
||||
java_utils_files = ' docbuilder/utils/Utils.java'
|
||||
|
||||
if args.jar:
|
||||
# TODO
|
||||
print('JAR build is not supported yet :(')
|
||||
else:
|
||||
classes_dir = file_dir + '/build/classes'
|
||||
headers_dir = file_dir + '/src/jni'
|
||||
# build all main Java classes
|
||||
os.system('javac -d ' + classes_dir + (' -h ' + headers_dir if args.headers else '') + java_files)
|
||||
# build class from utils
|
||||
os.system('javac -d ' + classes_dir + (' -h ' + headers_dir + '/utils' if args.headers else '') + java_utils_files)
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
package docbuilder.utils;
|
||||
|
||||
public class Utils {
|
||||
static {
|
||||
System.loadLibrary("docbuilder.jni_utils");
|
||||
}
|
||||
|
||||
public static native void addToPath(String directory);
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
QT -= core
|
||||
QT -= gui
|
||||
|
||||
TARGET = docbuilder.jni_utils
|
||||
|
||||
TEMPLATE = lib
|
||||
|
||||
CONFIG += shared
|
||||
CONFIG += plugin
|
||||
|
||||
CORE_ROOT_DIR = $$PWD/../../../../../..
|
||||
PWD_ROOT_DIR = $$PWD
|
||||
|
||||
include($$CORE_ROOT_DIR/Common/base.pri)
|
||||
|
||||
# Specify JDK path here
|
||||
JDK_PATH = "C:/Program Files/Java/jdk-22"
|
||||
|
||||
INCLUDEPATH += $$JDK_PATH/include
|
||||
|
||||
core_windows:JAVA_ARCH = win32
|
||||
core_linux:JAVA_ARCH = linux
|
||||
core_mac:JAVA_ARCH = darwin
|
||||
|
||||
INCLUDEPATH += $$JDK_PATH/include/$$JAVA_ARCH
|
||||
|
||||
SOURCES += \
|
||||
docbuilder_utils_Utils.cpp
|
||||
|
||||
HEADERS += \
|
||||
docbuilder_utils_Utils.h
|
||||
@ -0,0 +1,16 @@
|
||||
#include "docbuilder_utils_Utils.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string>
|
||||
|
||||
void Java_docbuilder_utils_Utils_addToPath(JNIEnv* env, jclass cls, jstring directory)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
const char* strUtfDirectory = env->GetStringUTFChars(directory, nullptr);
|
||||
std::string sPath(getenv("PATH"));
|
||||
sPath += ';';
|
||||
sPath += strUtfDirectory;
|
||||
_putenv_s("PATH", sPath.c_str());
|
||||
env->ReleaseStringUTFChars(directory, strUtfDirectory);
|
||||
#endif
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
#include <jni.h>
|
||||
/* Header for class docbuilder_utils_Utils */
|
||||
|
||||
#ifndef _Included_docbuilder_utils_Utils
|
||||
#define _Included_docbuilder_utils_Utils
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/*
|
||||
* Class: docbuilder_utils_Utils
|
||||
* Method: addToPath
|
||||
* Signature: (Ljava/lang/String;)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_docbuilder_utils_Utils_addToPath
|
||||
(JNIEnv *, jclass, jstring);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@ -5,7 +5,7 @@ public class Program {
|
||||
String workDirectory = "C:/Program Files/ONLYOFFICE/DocumentBuilder";
|
||||
String resultPath = "result.docx";
|
||||
|
||||
// TODO: Update system PATH at runtime
|
||||
docbuilder.utils.Utils.addToPath(workDirectory);
|
||||
|
||||
test(workDirectory, resultPath);
|
||||
|
||||
|
||||
@ -13,17 +13,10 @@ if __name__ == "__main__":
|
||||
java_file = 'Program.java'
|
||||
|
||||
if args.builder_dir:
|
||||
os_name = platform.system().lower()
|
||||
builder_dir = args.builder_dir
|
||||
if 'windows' == os_name:
|
||||
# to load dependent libraries
|
||||
os.environ['PATH'] = builder_dir + os.pathsep + os.environ['PATH']
|
||||
os.system('java -cp ../build/classes' + os.pathsep + 'build/classes -Djava.library.path=\"' + builder_dir + '\" Program')
|
||||
else:
|
||||
os.system('javac -d build/classes -cp ../build/classes ' + 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')
|
||||
os_name = platform.system().lower()
|
||||
if 'windows' == os_name:
|
||||
print('NOTE: You may need to add \"path_to_docbuilder\" to your PATH to load dependent libraries')
|
||||
print('Or just run: python make_test.py --run \"path_to_docbuilder\"')
|
||||
|
||||
Reference in New Issue
Block a user