2010-04-21 4 views
0

Здравствуйте, друзья я пытаюсь использовать FOP двигатель поиска я программно для примера, и я нахожу этот классНе удается найти пакет FOP (Ithink)

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); 
     } 
    } 
} 

Все Libs от ФОП находятся в Classpath включая 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, но с таким подходом я пытаюсь выполнить ФОП двигатель в C++ с помощью этого класса Java ..

У кого некоторые идеи, как решить эту ошибку ... Thanx заранее ..

ответ

1

В файле fop.jar классов, которые появляются с ошибками «не могу найти символ», не существует.

Я только что загрузил v0.95 библиотеки FOP, и я не вижу эти классы в любом из файлов jar в дистрибутиве. (Вы можете открыть файл jar в любой zip-программе и посмотреть - банку в основном представляет собой zip-файл с несколькими дополнительными битами, которые использует Java).

Я бы предположил, что классы, на которые ссылается ваш код примера, были удалены на какой-то стадии из библиотеки FOP, а пример для более старой версии. Поэтому вы можете попробовать найти более старую версию библиотеки, которая содержит эти классы, или искать более новые примеры. Бинарный дистрибутив поставляется с некоторыми примерами - возможно, просмотрите их, чтобы узнать, полезны ли они для вас?

Смежные вопросы