Грешка при използване на 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