7

こんにちは、FOP を使用して xml ファイルを pdf に変換しようとしていますが、エラーが発生し続けています。現在、エラーが発生しています。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlgraphics/io/ResourceResolver
at org.apache.fop.apps.FopConfParser.<init>(FopConfParser.java:122)
at org.apache.fop.apps.FopFactory.newInstance(FopFactory.java:132)
at run.ExampleFO2PDF.main(ExampleFO2PDF.java:62)

ビルドパスにFOPライブラリがあり、xmlgraphicscommons loggingAvalonフレームワークがあります

これは私が実行しようとしているコードです

        import java.io.BufferedOutputStream;
        import java.io.File;
        import java.io.FileNotFoundException;
        import java.io.FileOutputStream;
        import java.io.IOException;
        import java.io.OutputStream;

        import javax.xml.transform.Result;
        import javax.xml.transform.Source;
        import javax.xml.transform.Transformer;
        import javax.xml.transform.TransformerConfigurationException;
        import javax.xml.transform.TransformerException;
        import javax.xml.transform.TransformerFactory;
        import javax.xml.transform.sax.SAXResult;
        import javax.xml.transform.stream.StreamSource;

        import org.apache.fop.apps.*;
        import org.xml.sax.SAXException;

       public class pdf{
        public static void main(String[] args) throws SAXException, IOException, TransformerException
  {
        FopFactory fopFactory = FopFactory.newInstance(new File("."));
                OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("D:/temp/myfile.pdf")));
                try {
                  Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
                  TransformerFactory factory = TransformerFactory.newInstance();
                  Transformer transformer = factory.newTransformer(); // identity transformer
                  Source src = new StreamSource(new File("D:/temp/test.xml"));
                  Result res = new SAXResult(fop.getDefaultHandler());
                  transformer.transform(src, res);
                } finally {
                  //Clean-up
                  out.close();
                }
           }

    }
4

5 に答える 5

5
abstract interface org.apache.fop.apps.MimeConstants implements org.apache.xmlgraphics.util.MimeConstants

org.apache.xmlgraphics.util.MimeConstantsxmlgraphics-commons-1.5.jar に属します。クラスパスにxmlgraphics-commons-1.5.jarを含めるだけで問題が解決します。

于 2013-12-20T07:17:07.660 に答える
2

本当に古いスレッドですが、これを解決するのに非常に時間がかかるため、FOP 1.1 から 2.0 への移行では、pom で次のように変更しました。

から:

<dependency>
    <groupId>org.apache.xmlgraphics</groupId> 
    <artifactId>fop</artifactId> 
    <version>1.1</version>
</dependency>

に:

        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>fop</artifactId>
            <version>2.0</version>
            <exclusions>
                <exclusion>                  
                    <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>xmlgraphics-commons</artifactId>
                </exclusion>  
                <exclusion>
                    <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>batik-svg-dom</artifactId>
                </exclusion>  
                <exclusion>
                    <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>batik-bridge</artifactId>
                </exclusion>  
                <exclusion>
                    <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>batik-awt-util</artifactId>
                </exclusion>  
                <exclusion>
                    <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>batik-gvt</artifactId>
                </exclusion>  
                <exclusion>
                    <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>batik-transcoder</artifactId>
                </exclusion>  
                <exclusion>
                    <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>batik-extension</artifactId>
                </exclusion>  
                <exclusion>
                    <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>batik-ext</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>xmlgraphics-commons</artifactId>
            <version>2.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-svg-dom</artifactId>
            <version>1.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-bridge</artifactId>
            <version>1.8</version>
        </dependency>    
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-awt-util</artifactId>
            <version>1.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-gvt</artifactId>
            <version>1.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-transcoder</artifactId>
            <version>1.8</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>fop</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-extension</artifactId>
            <version>1.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
            <artifactId>batik-ext</artifactId>
            <version>1.8</version>
        </dependency>

于 2015-06-18T11:16:13.573 に答える
1

古いスレッド、完全を期すためにもう少し追加します。

0.92b から FOP 1.1 に更新したときに、MimeConstants クラスが見つからないという同様の問題に遭遇しました。

使用していたFOP版のソース配布物に含まれるxmlgraphics-commons版を使用することで解決しました。

お使いのバージョンの FOP がビルドされたときに使用された xmlgraphics-commons jar を使用してみてください。これは、FOP ソース配布の lib フォルダーにあります。

于 2013-09-05T10:43:20.937 に答える
0

xmlgraphicsjar は見つかりませんでしたが、 xmlgraphics-commonsは見つかりました。そうですか?

org.apache.xmlgraphics.io上でリンクしたページからは、パッケージが含まれていないように見えますが、 org.apache.xmlgraphics.util.io. 多分あなたはそれを意味しましたか?

于 2012-10-09T14:32:40.037 に答える