Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

create msword using POI jar Files

mshaqalaihApr 9 2018 — edited Apr 10 2018

hi every body

Oracle Release 12.2.0.1.0

POI version 3.16

SELECT DBMS_JAVA.get_ojvm_property(PROPSTRING => 'java.version') from dual;

1.8.0_121

I want to load POI jar files to oracle database and then create a class java to create/read msword file from oracle database.

These are steps i made to achieve that:

First give permission to user COMMON_DATA on POI jar files.

-- connect as sys

begin

dbms_java.grant_permission( 'COMMON_DATA', 'SYS:java.io.FilePermission', 'D:\DB12C2\admin\orcl\dpdump\commons-codec-1.10.jar', 'read' );

end;

/

begin

dbms_java.grant_permission( 'COMMON_DATA', 'SYS:java.io.FilePermission', 'D:\DB12C2\admin\orcl\dpdump\xmlbeans-2.6.0.jar', 'read' );

end;

/

begin

dbms_java.grant_permission( 'COMMON_DATA', 'SYS:java.io.FilePermission', 'D:\DB12C2\admin\orcl\dpdump\poi-3.16.jar', 'read' );

end;

/

begin

dbms_java.grant_permission( 'COMMON_DATA', 'SYS:java.io.FilePermission', 'D:\DB12C2\admin\orcl\dpdump\poi-ooxml-3.16.jar', 'read' );

end;

/

begin

dbms_java.grant_permission( 'COMMON_DATA', 'SYS:java.io.FilePermission', 'D:\DB12C2\admin\orcl\dpdump\poi-ooxml-schemas-3.16.jar', 'read' );

end;

Second load these jar files into oracle database:

-- connect as COMMON_DATA

BEGIN

  DBMS_JAVA.loadjava('D:\DB12C2\admin\orcl\dpdump\commons-codec-1.10.jar -verbose -resolve -force -genmissing');

  COMMIT;

END;

/

BEGIN

  DBMS_JAVA.loadjava('D:\DB12C2\admin\orcl\dpdump\xmlbeans-2.6.0.jar -verbose -resolve -force -genmissing');

  COMMIT;

END;

/

BEGIN

  DBMS_JAVA.loadjava('D:\DB12C2\admin\orcl\dpdump\poi-3.16.jar -verbose -resolve -force -genmissing');

  COMMIT;

END;

/

BEGIN

  DBMS_JAVA.loadjava('D:\DB12C2\admin\orcl\dpdump\poi-ooxml-3.16.jar -verbose -resolve -force -genmissing');

  COMMIT;

END;

/

BEGIN

  DBMS_JAVA.loadjava('D:\DB12C2\admin\orcl\dpdump\poi-ooxml-schemas-3.16.jar -verbose -resolve -force -genmissing');

  COMMIT;

END;

then i create oracle java source to read readdoc.docx file:

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED COMMON_DATA."WordReader" as import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.List;

import org.apache.poi.xwpf.usermodel.XWPFDocument;

import org.apache.poi.xwpf.usermodel.XWPFTable;

public class WordReader {

   

    public static void readWord() throws FileNotFoundException, IOException {

        String path = "D:\\DB12C2\\admin\\orcl\\dpdump\\readdoc.docx";

        XWPFDocument doc;

                File file;

                FileInputStream fis = null;

                try {

                    file = new File(path);

                    fis = new FileInputStream(file);

                    doc = new XWPFDocument(fis);

                   

                    List<XWPFTable> tables = doc.getTables();

                   

                System.out.println(tables.get(0).getRow(1).getCell(0).getText());

                }

                finally {

                    try {

                        if(fis != null) {

                            fis.close();

                            fis = null;

                        }

                    }

                    catch(IOException ioEx) {

                     

                    }

                }

    }

}

/

then i create an oracle procedure to call previous oracle java source :

CREATE OR REPLACE procedure COMMON_DATA.java_read_word

is language java

name 'WordReader.readWord()';

/

then i call previous procedure :

execute COMMON_DATA.java_read_word;

which give me this error :

ORA-29532: Java call terminated by uncaught Java exception: java.lang.VerifyError: (class: org/apache/poi/xwpf/usermodel/XWPFDocument, method: onDocumentRead signature: ()V) catch_type not a subclass of Throwable

ORA-06512: at "COMMON_DATA.JAVA_READ_WORD", line 1

ORA-06512: at line 1

can any body help please to solve this problem.

Thanks

Maher

This post has been answered by mNem on Apr 9 2018
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 8 2018
Added on Apr 9 2018
8 comments
790 views