I have a problem opening a word document. I have never tried it before and I do not know what is wrong. I am using a new B4XPages project and this code in B4XMainPage.  I also use jPOI 5.01 and Java 19.0.2. I tried different approaches I found in the forum and the error is always the same. In the following spoiler there is the error. Where am I making a mistake?
	
	
		
			
	
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
			
			WARNING: package com.sun.javafx.embed.swing.oldimpl not in javafx.swing
Waiting for debugger to connect...
Program started.
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
1
2
Error occurred on line: 86 (B4XMainPage)
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at anywheresoftware.b4j.object.JavaObject.RunMethod(JavaObject.java:132)
at b4j.example.b4xmainpage._mysub(b4xmainpage.java:165)
at b4j.example.b4xmainpage._tryittoloadtext(b4xmainpage.java:98)
at b4j.example.b4xmainpage._button1_click(b4xmainpage.java:84)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:629)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:234)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:111)
at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:100)
at anywheresoftware.b4a.BA$1.run(BA.java:236)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.lang.NoClassDefFoundError: org/openxmlformats/schemas/wordprocessingml/x2006/main/DocumentDocument$Factory
at org.apache.poi.xwpf.usermodel.XWPFDocument.onDocumentRead(XWPFDocument.java:161)
at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:169)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:126)
at b4j.example.b4xmainpage.readDocxFile(b4xmainpage.java:226)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
... 22 more
Caused by: java.lang.ClassNotFoundException: org.openxmlformats.schemas.wordprocessingml.x2006.main.DocumentDocument$Factory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 27 more
		Waiting for debugger to connect...
Program started.
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
1
2
Error occurred on line: 86 (B4XMainPage)
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at anywheresoftware.b4j.object.JavaObject.RunMethod(JavaObject.java:132)
at b4j.example.b4xmainpage._mysub(b4xmainpage.java:165)
at b4j.example.b4xmainpage._tryittoloadtext(b4xmainpage.java:98)
at b4j.example.b4xmainpage._button1_click(b4xmainpage.java:84)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:629)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:234)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:111)
at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:100)
at anywheresoftware.b4a.BA$1.run(BA.java:236)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184)
at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.lang.NoClassDefFoundError: org/openxmlformats/schemas/wordprocessingml/x2006/main/DocumentDocument$Factory
at org.apache.poi.xwpf.usermodel.XWPFDocument.onDocumentRead(XWPFDocument.java:161)
at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:169)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:126)
at b4j.example.b4xmainpage.readDocxFile(b4xmainpage.java:226)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
... 22 more
Caused by: java.lang.ClassNotFoundException: org.openxmlformats.schemas.wordprocessingml.x2006.main.DocumentDocument$Factory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 27 more
			
				B4X:
			
		
		
		Sub Class_Globals
    Private Root As B4XView
    Private xui As XUI
End Sub
Public Sub Initialize
'    B4XPages.GetManager.LogEvents = True
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("MainPage")
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Private Sub Button1_Click
    TryItToLoadText("c:\Nikos","MyDoc.docx")
End Sub
Sub TryItToLoadText(Dir As String, Filename As String)
        MySub
   
   
'        Return
'  
'        Dim sb As StringBuilder
'        sb.Initialize
'  
'        Dim doc As JavaObject = OpenDocx(Dir, Filename)
'        Dim paragraphs As List = doc.RunMethod("getParagraphs", Null)
'        For Each p As JavaObject In paragraphs
'            Dim runs As List = p.RunMethod("getRuns", Null)
'            If runs.IsInitialized Then
'                For Each r As JavaObject In runs
'                    Dim text As String = r.RunMethod("getText", Array(0))
'                    If text <> Null Then
''                        For Each key As String In m.Keys
''                            If text.Contains("$" & key & "$") Then
''                                r.RunMethod("setText", Array(" " & m.Get(key) & " ", 0))
''                            End If
''                        Next
'                           sb.Append(text)
'                    End If
'                Next
'                sb.Append(CRLF)
'            End If
'        Next
'        'SaveDocument(doc, File.DirApp , "Document" & c & ".docx")
'        Log(sb.ToString)
   
End Sub
Sub SaveDocument(doc As JavaObject, Dir As String, FileName As String)
    Dim out As OutputStream = File.OpenOutput(Dir, FileName, False)
    doc.RunMethod("write", Array(out))
    out.Close
End Sub
Sub OpenDocx(Dir As String, FileName As String) As JavaObject
    Dim inps As InputStream = File.OpenInput(Dir, FileName)
    Dim document As JavaObject
    document.InitializeNewInstance("org.apache.poi.xwpf.usermodel.XWPFDocument", _
       Array(inps))
    Return document
End Sub
Sub CreateNewDocx() As JavaObject 'ignore not used in this example
    Dim document As JavaObject
    document.InitializeNewInstance("org.apache.poi.xwpf.usermodel.XWPFDocument", _
       Null)
    Return document
End Sub
Sub MySub
    Dim jo As JavaObject = asJO(Me)
    jo.RunMethod("readDocxFile",Array("c:/Nikos/MyDoc.docx"))
End Sub
Sub asJO(o As JavaObject)As JavaObject
    Return o
End Sub
#if java
import java.io.File;
import java.io.FileInputStream;
import java.util.List;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
public static void readDocxFile(String fName) {
    try {
        File file = new File(fName);
        System.out.println("1");
        FileInputStream fis = new FileInputStream(file.getAbsolutePath());
        System.out.println("2");
        XWPFDocument document = new XWPFDocument(fis);
        System.out.println("3");
        List<XWPFParagraph> paragraphs = document.getParagraphs();
        for (XWPFParagraph para : paragraphs) {
            System.out.println(para.getText());
        }
        fis.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
#End If
			
				Last edited: 
			
		
	
								
								
									
	
		
			
		
	
								
							
							 
				 
 
		 
 
		 
 
		 
 
		 
 
		