LibreOffice Java Integration Fixes Summary
Problem
The DOCX to PDF converter was experiencing "javaldx failed!" errors and "تعذّر إكمال تثبيت المستخدم" (Cannot complete user installation) errors during conversion, even after adding --disable-java flags.
Root Cause
LibreOffice was still attempting to initialize Java components despite the --disable-java flag, causing the javaldx errors that prevented successful document conversion.
Solutions Implemented
1. Dockerfile Changes
- Removed Java dependencies: Completely removed
libreoffice-java-commonandopenjdk-11-jre-headlessfrom the apt-get install command - Added environment variables: Set
SAL_DISABLE_JAVA=1,SAL_DISABLE_JAVA_SECURITY=1, andLIBO_DISABLE_JAVA=1to completely disable Java - Updated LibreOffice configuration: Added JavaSupport=false to registrymodifications.xcu
- Updated initialization command: Added
--disable-javaflag to the LibreOffice pre-initialization command
2. app.py Changes
- Enhanced command flags: Added multiple Java-disabling flags to the LibreOffice command:
--disable-java(existing)--disable-extension-update--disable-webupdate--disable-remote-control--disable-notification--disable-oop4all--disable-opencl
- Enhanced environment variables: Added comprehensive Java-disabling environment variables:
SAL_DISABLE_JAVA=1SAL_DISABLE_JAVA_SECURITY=1LIBO_DISABLE_JAVA=1LIBO_JAVA_PARALLEL=0SAL_JAVA_DISABLE_SECURITY=1
- Updated LibreOffice configuration: Added JavaSupport=false to the registrymodifications.xcu configuration
3. main.py Changes
- Early environment setup: Set Java-disabling environment variables at the top of the file before any imports
- Enhanced health check: Added Java disabled status to the health check endpoint
Testing
A test script (test_libreoffice.py) was created to verify that LibreOffice can run successfully without Java integration.
Expected Results
These changes should completely eliminate the "javaldx failed!" errors and allow LibreOffice to run in a Java-free environment, resolving the conversion failures with return code 77.
Additional Benefits
- Faster LibreOffice startup (no Java initialization)
- Reduced memory usage (no Java VM)
- More stable conversions (no Java-related crashes)
- Better compatibility with containerized environments