Java 如何调用batik-rasterizer.jar

Java 如何调用batik-rasterizer.jar,java,batik,Java,Batik,使用batik 1.7版的batik光栅化器.jar,我想知道如何正确调用jar java -jar batik-rasterizer-1.7.jar -m image/png -q 0.8 $1 <svg xmlns="http://www.w3.org/2000/svg" width="467" height="462"> <rect x="80" y="60" width="250" height="250" rx="20" style="fi

使用batik 1.7版的
batik光栅化器.jar
,我想知道如何正确调用jar

java -jar batik-rasterizer-1.7.jar -m image/png -q 0.8 $1
<svg xmlns="http://www.w3.org/2000/svg"
     width="467" height="462">
  <rect x="80" y="60" width="250" height="250" rx="20"
      style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />

  <rect x="140" y="120" width="250" height="250" rx="40"
      style="fill:#0000ff; stroke:#000000; stroke-width:2px;
      fill-opacity:0.7;" />
</svg>
这给了我:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/batik/i18n/LocalizableSupport
<svg xmlns="http://www.w3.org/2000/svg"
     width="467" height="462">
  <rect x="80" y="60" width="250" height="250" rx="20"
      style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />

  <rect x="140" y="120" width="250" height="250" rx="40"
      style="fill:#0000ff; stroke:#000000; stroke-width:2px;
      fill-opacity:0.7;" />
</svg>

因此,我正在寻找要使用的正确的
MainClass
ClassPath
。我将在一分钟后发布一个脚本作为答案…

此脚本将所有必要的JAR从maven存储库中获取到一个类路径变量中。可能有更好的方法,例如使用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
<svg xmlns="http://www.w3.org/2000/svg"
     width="467" height="462">
  <rect x="80" y="60" width="250" height="250" rx="20"
      style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />

  <rect x="140" y="120" width="250" height="250" rx="40"
      style="fill:#0000ff; stroke:#000000; stroke-width:2px;
      fill-opacity:0.7;" />
</svg>
为了获得这些库,我创建了一个带有以下pom.xml的虚拟maven项目:

  <?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>
<svg xmlns="http://www.w3.org/2000/svg"
     width="467" height="462">
  <rect x="80" y="60" width="250" height="250" rx="20"
      style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />

  <rect x="140" y="120" width="250" height="250" rx="40"
      style="fill:#0000ff; stroke:#000000; stroke-width:2px;
      fill-opacity:0.7;" />
</svg>

4.0.0
com.bitplan.svg
com.bitplan.svg
0.0.1
SVG的虚拟项目
聚甲醛
org.apache.xmlgraphics
蜡染光栅器
1.7
org.apache.xmlgraphics
蜡染编解码器
1.7
org.apache.maven.wagen
马车ssh
1

这将是maven的重新打包方法:

<svg xmlns="http://www.w3.org/2000/svg"
     width="467" height="462">
  <rect x="80" y="60" width="250" height="250" rx="20"
      style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />

  <rect x="140" y="120" width="250" height="250" rx="40"
      style="fill:#0000ff; stroke:#000000; stroke-width:2px;
      fill-opacity:0.7;" />
</svg>
  • 基于下面的pom.xml创建一个maven项目
  • 添加Java类光栅化器
  • 添加JUnit测试TestRasterizer
  • 添加示例文件readandblue.svg
  • 运行mvn安装
  • 您应该得到一个“着色”jar文件target/com.bitplan.rasterizer-0.0.1.jar 其中已经包含java.awt.headless调用:

    <svg xmlns="http://www.w3.org/2000/svg"
         width="467" height="462">
      <rect x="80" y="60" width="250" height="250" rx="20"
          style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />
    
      <rect x="140" y="120" width="250" height="250" rx="40"
          style="fill:#0000ff; stroke:#000000; stroke-width:2px;
          fill-opacity:0.7;" />
    </svg>
    
    您还可以使用pom.xml“standalone”并简单地更改其中的主类

    <svg xmlns="http://www.w3.org/2000/svg"
         width="467" height="462">
      <rect x="80" y="60" width="250" height="250" rx="20"
          style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />
    
      <rect x="140" y="120" width="250" height="250" rx="40"
          style="fill:#0000ff; stroke:#000000; stroke-width:2px;
          fill-opacity:0.7;" />
    </svg>
    
    Rasterize.java包装类

    <svg xmlns="http://www.w3.org/2000/svg"
         width="467" height="462">
      <rect x="80" y="60" width="250" height="250" rx="20"
          style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />
    
      <rect x="140" y="120" width="250" height="250" rx="40"
          style="fill:#0000ff; stroke:#000000; stroke-width:2px;
          fill-opacity:0.7;" />
    </svg>
    
    TestRasterizer.java JUnit测试用例

    <svg xmlns="http://www.w3.org/2000/svg"
         width="467" height="462">
      <rect x="80" y="60" width="250" height="250" rx="20"
          style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />
    
      <rect x="140" y="120" width="250" height="250" rx="40"
          style="fill:#0000ff; stroke:#000000; stroke-width:2px;
          fill-opacity:0.7;" />
    </svg>
    
    示例svg文件:readandblue.svg

    <svg xmlns="http://www.w3.org/2000/svg"
         width="467" height="462">
      <rect x="80" y="60" width="250" height="250" rx="20"
          style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />
    
      <rect x="140" y="120" width="250" height="250" rx="40"
          style="fill:#0000ff; stroke:#000000; stroke-width:2px;
          fill-opacity:0.7;" />
    </svg>
    
    
    
    pom.xml:

    <svg xmlns="http://www.w3.org/2000/svg"
         width="467" height="462">
      <rect x="80" y="60" width="250" height="250" rx="20"
          style="fill:#ff0000; stroke:#000000;stroke-width:2px;" />
    
      <rect x="140" y="120" width="250" height="250" rx="40"
          style="fill:#0000ff; stroke:#000000; stroke-width:2px;
          fill-opacity:0.7;" />
    </svg>
    
    
    4.0.0
    com.bitplan.java
    0.0.1
    com.bitplan.rasterizer
    com.bitplan.rasterizer
    提供光栅化器访问
    3.8.1
    4.11
    org.apache.xmlgraphics
    蜡染光栅器
    1.7
    org.apache.xmlgraphics
    蜡染编解码器
    1.7
    朱尼特
    朱尼特
    ${junit4.version}
    org.apache.maven.plugins
    maven阴影插件
    2.3
    包裹
    阴凉处
    com.bitplan.rasterizer.rasterizer-->
    *:*
    META-INF/*.SF
    META-INF/*.DSA
    META-INF/*.RSA
    
    真是聪明又有创意!这对我来说不是开箱即用的,我还必须通过mvn触发依赖项下载,如下所示: