IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Erreur batik à l'exécution


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 139
    Par défaut Erreur batik à l'exécution
    Bonjour,


    Je suis débutant en batik et j'ai un programme java qui permet de créer une image à partir d'un texte en utilisant batik et je compile (sous red hat) ainsi:
    javac -classpath batik-dom.jar:batik-svggen.jar:batik-transcoder.jar:batik-svg-dom.jar:batik-awt-util.jar:batik-awt-util.jar:batik-bridge.jar:batik-css.jar:batik-extension.jar:batik-ext.jar:batik-gui-util.jar:batik-gvt.jar:batik-parser.jar:batik-script.jar:batik-swing.jar:batik-util.jar:batik-xml.jar:. ImageGenerator.java
    Le fichier java se trouve dans le même répertoire que les jar

    J'ai essayé de voir s'il y avait des imports qui manquaient en rajoutant des imports ou en compilant avec tous les jar de batik se trouvant sur le répertoire mais ça n'a rien changé.

    C'est peut-être mon classpath à la compilation qui pose problème mais je ne vois pas comment voir quel est la bonne manière d'utiliser le classpath

    Voici le code source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
     
    import java.awt.Rectangle;
    import java.awt.Graphics2D;
    import java.awt.Color;
    import java.io.Writer;
    import java.io.OutputStreamWriter;
    import java.io.IOException;
     
    import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; import java.applet.*; import javax.swing.*; 
     
    import org.apache.batik.ext.awt.g2d.AbstractGraphics2D;
    import org.apache.batik.svggen.SVGGraphics2D;
    import org.apache.batik.dom.GenericDOMImplementation;
    import org.w3c.dom.Document;
    import org.w3c.dom.DOMImplementation;
    import org.apache.batik.dom.svg.SVGDOMImplementation;
     
    import org.w3c.dom.*;
    import org.w3c.dom.svg.*;
     
     
    public class ImageGenerator{
     
    	public static void main(String[] args) {
    		ImageGenerator ig = new ImageGenerator();
    		try {
    			ig.generateImage("GLOBAL LOGISTICS PROVIDER", "/homepage.png", "Neo Sans", null, "0e0e0e", "40", "", "", "700");
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    	/*JAVA*/
        private static String C_MODULE_NAME = "ImageGenerator";
     
    	public void generateRolloverImages(String text, String rubriqueName) throws Exception {
    		int defaultWidth = 170;
    		generateImage(text, "/"+rubriqueName+"_off.png", "Neo Sans", null, "7F7F7F", "12", null, null, ""+defaultWidth);
    		generateImage(text, "/"+rubriqueName+"_on.png", "Neo Sans", null, "1D4C92" , "12", null, null, ""+defaultWidth );
    	}
        public void generateImage(String text, String fileLocation, String fontName,String bgColorStr, String txtColorStr, String fontSizeStr, String fontStyleStr, String heightStr, String widthStr) throws Exception {
     
     
          java.awt.Color bgColor = null;
          java.awt.Color txtColor = java.awt.Color.BLACK;
          int fontStyle = java.awt.Font.PLAIN;
          int height = -1;
          int width = -1;
          int fontSize = 12;
     
          if (fileLocation == null || fileLocation.length() == 0){
    		System.out.println("erreur");
            //wsnoheto.error.CTErreur.DeclencherException(C_MODULE_NAME, "generateImage",null);
          }
          //wsnoheto.error.CTErreur.DeclencherException(C_MODULE_NAME, C_METHOD_NAME, t);
          if (text == null) text = "";
          if (fontName == null || fontName.length() == 0) fontName = "Serif";
          if (bgColorStr != null && bgColorStr.length() > 0) bgColor = new java.awt.Color(Integer.parseInt(bgColorStr, 16));
          if (txtColorStr != null && txtColorStr.length() > 0) txtColor = new java.awt.Color(Integer.parseInt(txtColorStr, 16));
          if (heightStr != null && heightStr.length() > 0) height = Integer.parseInt(heightStr);
          if (widthStr != null && widthStr.length() > 0) width = Integer.parseInt(widthStr);
          if (fontSizeStr != null && fontSizeStr.length() > 0) fontSize = Integer.parseInt(fontSizeStr);
          if (fontSize <= 0) fontSize = 12;
          if (fontStyleStr != null) {
            String[] paramFontStyles = fontStyleStr.split("\\+");
            for (int i = 0; i < paramFontStyles.length; i++) {
              if (paramFontStyles[i].compareToIgnoreCase("BOLD") == 0) fontStyle += java.awt.Font.BOLD;
              if (paramFontStyles[i].compareToIgnoreCase("ITALIC") == 0) fontStyle += java.awt.Font.ITALIC;
            }
          }
          generateImage(text, fileLocation, fontName, bgColor, txtColor, fontSize, fontStyle, height, width);
        }
        public void generatePj(String textField, String imageField, String fontName,String bgColorStr, String txtColorStr, String fontSizeStr, String fontStyleStr, String heightStr, String widthStr) throws Throwable {
          StringBuilder imgRoot = new StringBuilder().append("image").append(java.io.File.separator).append("toto").append(java.io.File.separator);
          StringBuilder imgPath = new StringBuilder().append("pj").append(java.io.File.separator).append(textField).append("12").append(".png");
          String imgLocation = imgRoot.toString() + imgPath.toString();
          System.out.println( "imgLocation " + imgLocation );
          generateImage(textField, imgLocation, fontName, bgColorStr, txtColorStr, fontSizeStr, fontStyleStr, heightStr, widthStr);
          imageField=imgPath.toString().replace('\\', '/');
        }
        protected void generateImage(String text, String imageLocation, String fontName, java.awt.Color bgColor, java.awt.Color txtColor, int fontSize, int fontStyle, int height, int width) throws Exception {
          org.w3c.dom.Document document = org.apache.batik.dom.GenericDOMImplementation.getDOMImplementation().createDocument(org.apache.batik.dom.svg.SVGDOMImplementation.SVG_NAMESPACE_URI,"svg", null);
          org.apache.batik.svggen.SVGGraphics2D svgGenerator = new org.apache.batik.svggen.SVGGraphics2D(document);
          svgGenerator.setPaint(bgColor);
          //svgGenerator.setBackground(bgColor);
          if (bgColor != null) svgGenerator.fill(new java.awt.Rectangle(0, 0, width, height));
          svgGenerator.setPaint(txtColor);
     
          java.awt.Font curFont = new java.awt.Font(fontName, fontStyle, fontSize);
          svgGenerator.setFont(curFont);
          double maxWidth = 0;
          float sx = 0;
          float sy = 0;
          if (text.length() > 0){
            text = new String(text);
     
            String[] curLines = text.split("\n");
            for (int i = 0; i < curLines.length; i++){
              String curLine = curLines[i];
              int sstartchar = 0;
              java.text.AttributedString sas = new java.text.AttributedString(curLine);
              sas.addAttribute(java.awt.font.TextAttribute.FONT, curFont);
              java.text.AttributedCharacterIterator saci = sas.getIterator();
              java.awt.font.FontRenderContext sfrc = svgGenerator.getFontRenderContext();
              java.awt.font.LineBreakMeasurer slbm = new java.awt.font.LineBreakMeasurer(saci, sfrc);
              while (slbm.getPosition() < saci.getEndIndex()) {
                java.awt.font.TextLayout stextLayout = slbm.nextLayout(width);
                double curWidth = stextLayout.getBounds().getWidth();
                if (curWidth > maxWidth) maxWidth = curWidth;
                sy += stextLayout.getAscent();
                svgGenerator.drawString(curLine.substring(sstartchar, slbm.getPosition()), sx, sy);
                sstartchar = slbm.getPosition();
                sy += stextLayout.getDescent() + stextLayout.getLeading();
                sx = 0;
              }
            }
          }
          if (height < 0) height = Math.round(sy + 0.5f);
          width = new Long(Math.round(maxWidth + 1.5f)).intValue();
          svgGenerator.setSVGCanvasSize(new java.awt.Dimension(width, height));
     
          java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(8192);
          java.io.Writer svgOutput = new java.io.OutputStreamWriter(baos, java.nio.charset.Charset.forName(System.getProperty("file.encoding"))); //"ISO-8859-15"
          svgGenerator.stream(svgOutput, true);
     
          // Create the transcoder input.
          org.apache.batik.transcoder.TranscoderInput input = new org.apache.batik.transcoder.TranscoderInput(new java.io.StringReader(baos.toString()));
     
          // Create the transcoder output.
          java.io.OutputStream ostream = null;
          String absimageLocation = imageLocation;
          System.out.println(absimageLocation);
          java.io.File file = new java.io.File(absimageLocation);
          new java.io.File(file.getParent()).mkdirs();
          ostream = new java.io.FileOutputStream(absimageLocation);
          org.apache.batik.transcoder.TranscoderOutput output = new org.apache.batik.transcoder.TranscoderOutput(ostream);
          //org.apache.batik.transcoder.image.JPEGTranscoder transcoder = new org.apache.batik.transcoder.image.JPEGTranscoder();
          //transcoder.addTranscodingHint(JPEGTranscoder.KEY_QUALITY,new Float(.1));
          org.apache.batik.transcoder.image.PNGTranscoder transcoder = new org.apache.batik.transcoder.image.PNGTranscoder();
          transcoder.transcode(input, output);
          ostream.flush();
          ostream.close();
        }
    }
    après avoir compilé je fais un java ImageGenerator puis je me retrouve avec l'exception suivante:
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/batik/dom/GenericDOMImplementation
    at ImageGenerator.generateImage(ImageGenerator.java:81)
    at ImageGenerator.generateImage(ImageGenerator.java:70)
    at ImageGenerator.main(ImageGenerator.java:26)
    Caused by: java.lang.ClassNotFoundException: org.apache.batik.dom.GenericDOMImplementation
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
    ... 3 more
    L'exception pointe sur la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    org.w3c.dom.Document document = org.apache.batik.dom.GenericDOMImplementation.getDOMImplementation().createDocument(org.apache.batik.dom.svg.SVGDOMImplementation.SVG_NAMESPACE_URI,"svg", null);

    Merci d'avance pour votre compréhension

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 139
    Par défaut
    j'ai trouvé la réponse.

    Faut plutôt faire un export CLASSPATH= .... que dans javac et ça marche mieux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreur ds l exécution d un simple prog
    Par tenderstoune dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 2
    Dernier message: 10/03/2007, 13h17
  2. erreur dans l'exécution de Dlookup
    Par jessy212 dans le forum Access
    Réponses: 3
    Dernier message: 30/08/2006, 13h58
  3. Erreur 3141 dans exécution de code
    Par zoom61 dans le forum Access
    Réponses: 13
    Dernier message: 23/03/2006, 17h31
  4. [ASP] message d'erreur (impossible d'excuter un projet ...)
    Par haganidjamel dans le forum Delphi .NET
    Réponses: 6
    Dernier message: 06/09/2005, 17h28
  5. Réponses: 2
    Dernier message: 23/09/2003, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo