Search code examples
javabatik

How to call batik-rasterizer.jar


Using batik-rasterizer.jar from version 1.7 of batik, I was wondering how to call the jar correctly.

java -jar batik-rasterizer-1.7.jar -m image/png -q 0.8 $1

Which gave me:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/batik/i18n/LocalizableSupport

Therefore, I was looking for the correct MainClass and ClassPath to use. I'll post a script I came up with as an answer in a minute ...


Solution

  • This script gets all necessary jars from the maven repository into a classpath variable. Probably there is a better way e.g. repacking using maven ...

    #!/bin/bash
    #set -x
    batikdir=$HOME/.m2/repository/org/apache/xmlgraphics/batik-rasterizer/1.7/
    batik=batik-rasterizer-1.7.jar
    main=org.apache.batik.apps.rasterizer.Main
    jarlist=/tmp/jarlist$$.txt
    cp=$batikdir/$batik
    find $HOME/.m2/repository -type f -name *.jar > $jarlist
    for j in batik-ext-1.7.jar batik-dom-1.7.jar batik-css-1.7.jar batik-svg-dom-1.7.jar batik-gvt-1.7.jar batik-parser-1.7.jar batik-script-1.7.jar batik-bridge-1.7.jar batik-anim-1.7.jar batik-transcoder-1.7.jar batik-awt-util-1.7.jar batik-codec-1.7.jar batik-util-1.7.jar batik-xml-1.7.jar xerces-2.5.0.jar xalan-2.6.0.jar xml-apis-1.3.04.jar xml-apis-ext-1.3.04.jar fop-0.94.jar batik-js.jar
    do
      #echo $j
        p=`grep $j $jarlist`
        cp="$cp:$p"
    done
    #echo $cp
    # http://tech.groups.yahoo.com/group/svg-developers/message/47939
    java -cp $cp $main -scriptSecurityOff -m image/png -q 0.8 $1 
    rm -f $jarlist
    

    to get the libraries i created a dummy maven project with the following pom.xml:

      <?xml version="1.0" encoding="UTF-8"?>
        <!--
        install maven 2 to use this pom file
        run e.g. mvn dependency:go-offline to download all libraries
        -->
        <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.bitplan.svg</groupId>
        <artifactId>com.bitplan.svg</artifactId>
        <version>0.0.1</version>
        <name>Dummy Project for SVG </name>
        <packaging>pom</packaging>
        <dependencies>
          <dependency>
            <groupId>org.apache.xmlgraphics</groupId>
                <artifactId>batik-rasterizer</artifactId>
            <version>1.7</version>
            </dependency>       
            <dependency>
                <groupId>org.apache.xmlgraphics</groupId>
                    <artifactId>batik-codec</artifactId>
                    <version>1.7</version>
            </dependency>
        </dependencies>
        <!-- configure jar plugin to build test-jar http://maven.apache.org/guides/mini/guide-attached-tests.html -->
        <build>
            <extensions>
                <extension>
                    <groupId>org.apache.maven.wagon</groupId>
                    <artifactId>wagon-ssh</artifactId>
                    <version>1.0</version>
                </extension>
            </extensions>
        </build>
        </project>