2010-04-21 87 views
0

朋友你好我嘗試使用FOP引擎編程我搜索一個例子,我覺得這個類找不到包FOP(我思)

import java.io.File; 
import java.io.IOException; 
import java.io.OutputStream; 

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

import org.apache.avalon.framework.ExceptionUtil; 
import org.apache.avalon.framework.logger.ConsoleLogger; 
import org.apache.avalon.framework.logger.Logger; 

import org.apache.fop.apps.Driver; 
import org.apache.fop.apps.FOPException; 
import org.apache.fop.messaging.MessageHandler; 

public class Invokefop 
{ 

    public void convertXML2PDF(File xml, File xslt, File pdf) 
       throws IOException, FOPException, TransformerException { 
     Driver driver = new Driver(); 
     Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO); 
     driver.setLogger(logger); 
     MessageHandler.setScreenLogger(logger);  
     driver.setRenderer(Driver.RENDER_PDF); 
     OutputStream out = new java.io.FileOutputStream(pdf); 
     try { 
      driver.setOutputStream(out); 
      TransformerFactory factory = TransformerFactory.newInstance(); 
      Transformer transformer = factory.newTransformer(new StreamSource(xslt)); 
      Source src = new StreamSource(xml); 
      Result res = new SAXResult(driver.getContentHandler()); 
      transformer.transform(src, res); 
     } finally { 
      out.close(); 
     } 
    } 


    public static void main(String[] args) { 
     try { 
      System.out.println("JAVA XML2PDF:: FOP ExampleXML2PDF\n"); 
      System.out.println("JAVA XML2PDF:: Preparing..."); 

      File base = new File("../"); 
      File baseDir = new File(base, "in"); 
      File outDir = new File(base, "out"); 
      outDir.mkdirs(); 


      File xmlfile = new File(baseDir, args[0]); 
      File xsltfile = new File(baseDir, args[1]); 
      File pdffile = new File(outDir, args[2]); 

      System.out.println("JAVA XML2PDF:: Input: XML (" + xmlfile + ")"); 
      System.out.println("JAVA XML2PDF:: Stylesheet: " + xsltfile); 
      System.out.println("JAVA XML2PDF:: Output: PDF (" + pdffile + ")"); 
      System.out.println(); 
      System.out.println("JAVA XML2PDF:: Transforming..."); 

      Invokefop app = new Invokefop(); 
      app.convertXML2PDF(xmlfile, xsltfile, pdffile); 

      System.out.println("JAVA XML2PDF:: Success!"); 
     } catch (Exception e) { 
      System.err.println(ExceptionUtil.printStackTrace(e)); 
      System.exit(-1); 
     } 
    } 
} 

所有的Fop的的利布斯在類路徑中包括fop.jar在建立目錄中。 後,我跑了javac Invokefop.java我得到這個錯誤:

> C:\....\fop>javac Invokefop.java 
Invokefop.java:21: cannot find symbol 
symbol : class Driver 
location: package org.apache.fop.apps 
import org.apache.fop.apps.Driver; 
         ^
Invokefop.java:23: package org.apache.fop.messaging does not exist 
import org.apache.fop.messaging.MessageHandler; 
          ^
Invokefop.java:31: cannot find symbol 
symbol : class Driver 
location: class Invokefop 
     Driver driver = new Driver(); 
     ^
Invokefop.java:31: cannot find symbol 
symbol : class Driver 
location: class Invokefop 
     Driver driver = new Driver(); 
          ^
Invokefop.java:36: cannot find symbol 
symbol : variable MessageHandler 
location: class Invokefop 
     MessageHandler.setScreenLogger(logger); 
     ^
Invokefop.java:39: cannot find symbol 
symbol : variable Driver 
location: class Invokefop 
     driver.setRenderer(Driver.RENDER_PDF); 
         ^
6 errors 

我是比較新的Java的,但這種做法我嘗試使用該Java類在C執行FOP引擎++ ..

有任何人一些想法,如何解決這個錯誤... Thanx提前..

回答

1

fop.jar文件中不存在提供「找不到符號」錯誤的類。

我剛剛下載了FOP庫的v0.95,並且我看不到分佈中任何jar文件中的那些類。 (你可以在任何壓縮程序中打開一個jar文件並看一看 - 一個jar基本上是一個zip文件,在那裏有一些Java使用的額外位)。

我猜你的示例代碼中引用的類在某些階段從FOP庫中被刪除,並且該示例適用於舊版本。因此,您可以嘗試查找包含這些類的舊版本庫,或查找更新的示例。二進制發行版帶有一些示例 - 可能會查看這些發現是否對您有用?