Autor Beitrag
jahuer1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 20.10.11 10:25 
Ausgangslage:
Ich habe mir aus den fop-1.0 jar's mit ikvmc eine dll gemacht:

ikvmc -target:library -reference:IKVM.OpenJDK.Core.dll -recurse:{myPathToJars}\*.jar -version:1.0 -out:{myPathToJars}\fop.dll

Das hat funktioniert. So weit so gut.

Problem:

Wenn ich nun meine fop.dll von einer Windows Form Application aus anspreche, funktioniert alles bestens.

Wenn ich aber die fop.dll in einer anderen DLL (Class Library) oder einer Console Application einbinde, bekomme ich zur Runtime den folgenden Fehler:

"Provider com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl not found" at javax.xml.transform.TransformerFactory.newInstance()


Meine Methode (ja, das ist C# :wink: ):
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
public static void xmlToPDF(String xmlPath, String xslPath, SortedList arguments, String destPdfPath)
        {
            java.io.File xmlfile = new java.io.File(xmlPath);
            java.io.File pdffile = new java.io.File(destPdfPath);
            try
            {
                // configure fopFactory as desired
                FopFactory fopFactory = FopFactory.newInstance();

                FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
                // configure foUserAgent as desired

                // Setup output
                OutputStream outputStream = new java.io.FileOutputStream(pdffile);
                outputStream = new java.io.BufferedOutputStream(outputStream);

                try
                {
                    // Construct fop with desired output format
                    Fop fop = fopFactory.newFop("application/pdf" /*MimeConstants.MIME_PDF*/, foUserAgent, outputStream);

                    // Setup XSLT
                    TransformerFactory factory = TransformerFactory.newInstance();

                    java.io.File xsltfile = new java.io.File(xslPath);
                    Transformer transformer = factory.newTransformer(new StreamSource(xsltfile.getAbsoluteFile()));

                    // Set the value of a  in the stylesheet
                    if (arguments != null)
                    {
                        IList keys = arguments.GetKeyList();
                        foreach (var key in keys)
                        {
                            Object value = arguments[key];
                            transformer.setParameter(key.ToString(), value);
                        }

                    }

                    // Setup input for XSLT transformation
                    Source src = new StreamSource(xmlfile);

                    // Resulting SAX events (the generated FO) must be piped through to FOP
                    Result res = new SAXResult(fop.getDefaultHandler());

                    // Start XSLT transformation and FOP processing
                    transformer.transform(src, res);
                }
                catch (Exception e1)
                {
                    System.Console.WriteLine(e1.Message);
                }
                finally
                {
                    outputStream.close();
                }

            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.Message);
            }
        }

Der Fehler passiert in der Zeile 23:
ausblenden C#-Quelltext
1:
TransformerFactory factory = TransformerFactory.newInstance();					


Verwendete IKVM-Version: 0.46.0.1
Eingebundene jar's:

avalon-framework-4.2.0.jar
batik-all-1.7.jar
commons-io-1.3.1.jar
commons-logging-1.0.4.jar
fop.jar
serializer-2.7.0.jar
xalan-2.7.0.jar
xercesImpl-2.7.1.jar
xml-apis-1.3.04.jar
xml-apis-ext-1.3.04.jar
xmlgraphics-commons-1.4.jar

Was ist hier falsch???
Worin liegt der Fehler? Habe ich etwas vergessen einzubinden?

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt