1

メタデータ エクストラクタ APIを使用して、画像からメタデータを抽出しています。次に、Java を使用して、すべてのデータを含む .txt ファイルを作成しています。ただし、ファイルを実行すると、nullpointexception が発生します。

NetBeans で提供されている出力ボックスに出力されているので、何かが出力されていることがわかります。

ファイルを作成するクラス:

private void metadataImageButtonMouseClicked(java.awt.event.MouseEvent evt) {                                                 
    System.out.println(MetaData.getTags());
    try {
    File report;
    report = new File("report.txt");

        report.createNewFile();
        FileWriter kmlStream = new FileWriter("report.txt");
        try (BufferedWriter out = new BufferedWriter(kmlStream)) {
            out.write(MetaData.allTags);
            statusUpdateMessage.setText("Report file created");
            System.out.println("New file \"Report.txt\" has been created to the current directory");
        }
    } catch (IOException ex) {
        Logger.getLogger(MetaDataExtractor.class.getName()).log(Level.SEVERE, null, ex);
    }

すべてのメタデータを取得します

    Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);

    for (Directory directory : metadata.getDirectories()) {
        for (Tag allTags : directory.getTags()) {
            System.out.println(allTags);
        }
    }
} catch (ImageProcessingException ex) {
    Logger.getLogger(MetaData.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
    Logger.getLogger(MetaData.class.getName()).log(Level.SEVERE, null, ex);
}
return allTags;

私が最初に考えたのは、戻り値の型を文字列にすることでしたが、それはできませんでした。私はJavaが得意ではないので、どんな提案も大歓迎です。ここにエラーがあります

前もって感謝します。

4

2 に答える 2

1

エラー トレースの最初の行は次のとおりです。

at java.io.Writer.write(Writer.java:157)
at MetaDataExtractor.metadataImageButtonMouseClicked(MetaDataExtractor.java:541)

問題はmetadataImageButtonMouseClicked(e)、特に541 行目にあります。そこにはどの命令がありますか? どの変数が関与していますか?これは役立つはずです

于 2012-10-02T21:51:50.203 に答える
1

JDK に付属する java.io.Writer のソース コードを読むだけで、ヌル文字列を Writer に書き込んでおり、それが NullPointerException を引き起こしていると推測できます。これMetaDataExtractor.metadataImageButtonMouseClicked()は、ファイルMetaDataExtractor.javaの 541 行目で発生します。

文字列を書き込む前に、文字列が null でないことを確認してください。

于 2012-10-02T21:31:52.540 に答える