Ошибка при использовании pdfbox для создания pdf: ожидается идентификатор после этого токена

Я работаю над простым проектом Java в eclipse juno, используя jre6/jdk6 в качестве среды выполнения/компилятора. Я хочу использовать apache pdfbox для создания некоторых PDF-файлов. у меня загружен и добавил pdfbox 1.8.9 в мой путь сборки. теперь я взял образец кода из здесь и использовал его в своем приложении, но это дает мне несколько ошибок, которые, я думаю, связаны с некоторыми проблемами среды.

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class TestPdf {

PDDocument document = new PDDocument();
// Create a new blank page and add it to the document
PDPage blankPage = new PDPage();
document.addPage( blankPage );
// Save the newly created document
document.save("BlankPage.pdf");
// finally make sure that the document is properly
// closed.
document.close();
}

Это ошибки, которые я получаю:

Syntax error on token "blankPage", VariableDeclaratorId expected after this token
Syntax error on token ""BlankPage.pdf"", delete this token
Syntax error on token "close", Identifier expected after this token

person Subham Tripathi    schedule 17.05.2015    source источник
comment
Это кажутся ошибками Javac!   -  person Raffaele    schedule 17.05.2015
comment
я тоже так думаю @Raffaele, но как исправить?   -  person Subham Tripathi    schedule 17.05.2015
comment
@SubhamTripathi Посмотрите мой ответ и дайте мне знать, если вам нужны дополнительные разъяснения.   -  person CKing    schedule 17.05.2015


Ответы (1)


Вы должны создать метод и переместить часть кода внутри метода:

public class TestPdf {

    PDDocument document = new PDDocument();
    // Create a new blank page and add it to the document
    PDPage blankPage = new PDPage();

    public void createDocument()throws Exception {
        document.addPage(blankPage);
        // Save the newly created document
        document.save("BlankPage.pdf");
        // finally make sure that the document is properly
        // closed.
        document.close();
    }
}

Код, который вы разместили в своем вопросе, противоречит правилам синтаксиса языка Java. Подробнее о структуре класса можно прочитать здесь

person CKing    schedule 17.05.2015
comment
да, это сработало для меня. но почему это не работало раньше, не могли бы вы пролить свет на это? - person Subham Tripathi; 17.05.2015
comment
Это очень распространенная ошибка разработчиков, когда они пишут код в спешке. Ваш код не работал, потому что код, который я переместил в метод createDocument, нельзя объявлять без включающего метода, статического блока или блока экземпляра. Это синтаксис Java для вас, и вы не можете идти против синтаксиса языка. Я считаю, что ответил на ваш вопрос, так что не забудьте нажать галочку и проголосовать :) - person CKing; 17.05.2015
comment
обязательно поставлю галочку... спасибо за помощь :) - person Subham Tripathi; 17.05.2015