当前位置: 首页 > 知识库问答 >
问题:

使用XWPFDocument打开docx文件时的NullPointerException[duplicate]

张腾
2023-03-14
public class MainClass {
    public static void main(String[] args) {
        try {
            File file = new File("C:\\DevProjects\\Word\\test1.docx");
            FileInputStream fis = new FileInputStream(file);
            XWPFDocument document = new XWPFDocument(fis) ;
        }catch(Exception e) {  
            System.out.println(e.getMessage());  
        }  
    }
}
Exception in thread "main" java.lang.ExceptionInInitializerError
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
    at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:156)
    at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
    at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
    at java.lang.reflect.Field.get(Field.java:393)
    at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:775)
    at org.openxmlformats.schemas.wordprocessingml.x2006.main.DocumentDocument.<clinit>(Unknown Source)
    at org.openxmlformats.schemas.wordprocessingml.x2006.main.DocumentDocument$Factory.parse(Unknown Source)
    at org.apache.poi.xwpf.usermodel.XWPFDocument.onDocumentRead(XWPFDocument.java:180)
    at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:184)
    at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:145)
    at com.word.MainClass.main(MainClass.java:21)
Caused by: java.lang.RuntimeException: Could not instantiate SchemaTypeSystemImpl (java.lang.reflect.InvocationTargetException): is the version of xbean.jar correct?
    at schemaorg_apache_xmlbeans.system.sD023D6490046BA0250A839A9AD24C443.TypeSystemHolder.loadTypeSystem(Unknown Source)
    at schemaorg_apache_xmlbeans.system.sD023D6490046BA0250A839A9AD24C443.TypeSystemHolder.<clinit>(Unknown Source)
    ... 13 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    ... 15 more
Caused by: java.lang.NullPointerException
    at org.apache.xmlbeans.impl.schema.ClassLoaderResourceLoader.getResourceAsStream(ClassLoaderResourceLoader.java:33)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.getLoaderStream(SchemaTypeSystemImpl.java:2249)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.<init>(SchemaTypeSystemImpl.java:1522)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.initFromHeader(SchemaTypeSystemImpl.java:273)
    at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.<init>(SchemaTypeSystemImpl.java:185)
    ... 19 more

我做错了什么?

共有1个答案

阳德润
2023-03-14

我设法使用XWPFDocument类打开了Word文档。这也回答了这里发布的问题:Apache POI XSSFWorkbook为文件抛出NullPointerException。下面是我是怎么做的:

  1. 我将JAR直接添加到项目中-请参见项目层次结构-Eclipse项目结构
  2. 我将JAR添加到Java构建路径中-请参见这里的Java构建路径

我在Java8和JDK11中测试了这一点,它们都可以工作。

 类似资料:
  • 使用Eclipse2018_09和Vaadin8的im。我只是直接创建了一个干净的Vaadin项目“MyApplication”。当我创建一个Vaadin设计器文件“testdesigne.html”并尝试打开它时,设计器崩溃,文件将被关闭。它首先尝试加载视图,并在5秒后崩溃。 当我打开Eclipse错误日志视图时,我可以看到以下2个问题: 从插件调用代码时出现问题:“org.eclipse.ui

  • 问题内容: 和Python和有什么不一样?我什么时候应该使用哪个?(假设我处于2.5级) 问题答案: 您应该始终使用。 如文档所述: 打开文件时,最好使用open()而不是直接调用此构造函数。文件更适合类型测试(例如,编写“ isinstance(f,file)”)。 另外,自Python 3.0起 已被删除。

  • 我还尝试了另一种方法:修改原始XML、解压缩docx并操作文件“word/document.XML”。当我压缩回解压缩的文件夹并将其重命名为docx时,MS Word无法打开它。

  • 问题内容: 作为一个小项目,我认为制作文本编辑器会很酷。我目前无法打开文件。这是我打开文件的代码(是,打开是): 尝试块给我带来了麻烦。Eclipse表示未定义type 。似乎也未定义。有另一种方法可以解决此问题,或另一种工作原理相同的方法吗? 问题答案: 你需要调用在一旦返回,所以更改您的代码:

  • 我在我的应用程序中使用eclipse swt。它允许我打开word文件(doc、docx、rtf)。 但当打开docx文件(doc或rtf打开罚款)时,我无法隐藏“在打开时确认转换”对话框编程。Windows XP SP3、Microsoft Word 2003 SP3和FileFormatConverters安装在机器上。在VBA中,当设置属性Application时,此对话框会隐藏。选项。确认

  • 我试图在javascript中打开一个json文件, 这不起作用,无法登录。json是一种东西,这就是它的本质: 任何帮助都很好,我需要使用Ajax吗?还是这是一个愚蠢的错误?我是javascript新手。