小编Ste*_*eak的帖子

Java: java.lang.NoSuchMethodError: 'void org.apache.fontbox.cmap.CMapParser.<init>(布尔值)

我正在尝试使用 Java 阅读 PDF 文档。我对此很陌生,而且对使用 IntelliJ 配置依赖项也很陌生。完整的错误是:

Exception in thread "main" java.lang.NoSuchMethodError: 'void org.apache.fontbox.cmap.CMapParser.<init>(boolean)'
    at org.apache.pdfbox.pdmodel.font.CMapManager.parseCMap(CMapManager.java:74)
    at org.apache.pdfbox.pdmodel.font.PDFont.readCMap(PDFont.java:213)
    at org.apache.pdfbox.pdmodel.font.PDFont.loadUnicodeCmap(PDFont.java:147)
    at org.apache.pdfbox.pdmodel.font.PDFont.<init>(PDFont.java:115)
    at org.apache.pdfbox.pdmodel.font.PDSimpleFont.<init>(PDSimpleFont.java:74)
    at org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.<init>(PDTrueTypeFont.java:185)
    at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:89)
    at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:146)
    at org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:66)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:933)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:515)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:489)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:156)
    at org.apache.pdfbox.text.LegacyPDFStreamEngine.processPage(LegacyPDFStreamEngine.java:144)
    at org.apache.pdfbox.text.PDFTextStripper.processPage(PDFTextStripper.java:394)
    at org.apache.pdfbox.text.PDFTextStripper.processPages(PDFTextStripper.java:322)
    at org.apache.pdfbox.text.PDFTextStripper.writeText(PDFTextStripper.java:269)
    at org.apache.pdfbox.text.PDFTextStripper.getText(PDFTextStripper.java:233)
    at com.company.Main.main(Main.java:18)
Run Code Online (Sandbox Code Playgroud)

我现在的代码:

public static void main(String[] args) throws IOException {
    PDDocument document = PDDocument.load(new File("src/dummy.pdf"));
    if(!document.isEncrypted()){
        PDFTextStripper stripper = new PDFTextStripper();
        String text = stripper.getText(document);
        System.out.println("Text:"+text);
    }
    document.close();
} …
Run Code Online (Sandbox Code Playgroud)

java pdf nosuchmethoderror pdfbox

1
推荐指数
1
解决办法
2948
查看次数

为什么链表插入节点中“新建”后没有“删除”

我一直试图通过阅读一些文本和查找内容来理解 C++ 中的内存分配。我经常看到人们应该总是在“new”之后调用“delete”。但是,我也看到这样的代码:

void LinkedList::add(int data){
    Node* node = new Node();
    node->data = data;
    node->next = this->head;
    this->head = node;
    this->length++;
}
Run Code Online (Sandbox Code Playgroud)

在链表或堆栈等结构中。

我在 SO 上看到了一些很好的解释,例如:

为什么 C++ 程序员应该尽量减少“new”的使用? 在 C++ 中,何时使用“new”,何时不使用?

但是,我仍然很困惑为什么不在这里为新节点调用“删除”。

编辑:让我澄清我的问题。我明白为什么不立即以相同的方法调用 delete 。但是,在相同的代码中,我没有看到与添加匹配的删除语句。我假设一旦程序结束,一切都会被删除,但我很困惑,没有明显匹配的删除语句(即:计算代码中的所有新闻,计算代码中的所有删除,它们不匹配)。

编辑:这是我正在查看的来源:https : //www.geeksforgeeks.org/linked-list-set-2-inserting-a-node/

他们的链表的代码:

// A complete working C++ program to demonstrate
//  all insertion methods on Linked List
#include <bits/stdc++.h>
using namespace std;
 
// A linked list node
class Node
{
    public:
    int data;
    Node *next;
};
 
/* Given a reference (pointer …
Run Code Online (Sandbox Code Playgroud)

c++ linked-list new-operator delete-operator

1
推荐指数
1
解决办法
108
查看次数