Getting ClassCastException while Document.PageCount

我也遇到了同样的问题,经过尝试 我发现单线程运行没问题。在多个请求多个线程运行下会偶发性出现问题

@gyc 如果可能,请创建一个简单的应用程序,以便我们重现该问题。

 public static void main(String[] args) throws Exception {

        // 简单模拟多线程操作  偶发性出现  javajdk环境1.8
        final Document document = new Document("文件路径");
        for (int i = 0; i < 50 ; i++) {

            // 创建多个线程并启动
            Thread thread1 = new Thread(()-> {
                try {
                    System.out.println(document.getPageCount());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
            Thread thread2 = new Thread(()-> {
                try {
                    System.out.println(document.getPageCount());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
            Thread thread3 = new Thread(()-> {
                try {
                    System.out.println(document.getPageCount());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });

            thread1.start();
            thread2.start();
            thread3.start();
        }

    }
 //会偶发性的出现一下问题 java.lang.NullPointerException  java.lang.ArrayIndexOutOfBoundsException: 
 java.lang.ClassCastException 等问题

@gyc 在您的代码中,您在多个线程中处理同一文档。 不支持这种情况。 只要一次只有一个线程处理文档,Aspose.Words 就是多线程安全的。 一个线程处理一个文档是一种典型的场景。 不同的线程可以安全地同时处理不同的文档。

上述代码只是一种简单的模拟。实际业务场景是我在内存中缓存了一个公共文档document对象。多个线程会获取这个文document作为新文当中的一个section节 。感谢您的答疑。我想我大概知道问题的所在了,以及如何解决了

@gyc 如有任何问题,请随时询问,我们随时乐意为您提供帮助。