title: java.lang.NoClassDefFoundError: Could not initialize class javax.media.jai.JAI
body: <p>I recently started my first program with GeoTools in which i was also using JAI- Java Advanced Imaging 1_1_2_01 with JDK 1_7. <strong>It worked fine until I added GeoTiff Jars</strong>. I found following error</p>
  
  <blockquote>
    <p>Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class javax.media.jai.JAI
        at org.geotools.gce.geotiff.GeoTiffReader.read(GeoTiffReader.java:607)
        at com.rgb.PixelExtractor.extract(PixelExtractor.java:55)
        at com.rgb.RGBSpliter.main(RGBSpliter.java:136)</p>
  </blockquote>
  
  <p>The Code is as below</p>
  
  <pre><code> public void extract(File f, String name, String date) throws Exception {
   ParameterValue&lt;OverviewPolicy&gt; policy = AbstractGridFormat.OVERVIEW_POLICY
          .createValue();
   policy.setValue(OverviewPolicy.IGNORE);
  
   // this will basically read 4 tiles worth of data at once from the disk...
   ParameterValue&lt;String&gt; gridsize = AbstractGridFormat.SUGGESTED_TILE_SIZE.createValue();
   //gridsize.setValue(512 * 4 + "," + 512);
  
   // Setting read type: use JAI ImageRead (true) or ImageReaders read methods (false)
   ParameterValue&lt;Boolean&gt; useJaiRead = AbstractGridFormat.USE_JAI_IMAGEREAD.createValue();
   useJaiRead.setValue(true);
  
   //reader.read(new GeneralParameterValue[] { policy, gridsize, useJaiRead });
   // The line that throws error
   GridCoverage2D image
          = new GeoTiffReader(f).read(new GeneralParameterValue[]{policy, gridsize, useJaiRead});
   Rectangle2D bounds2D = image.getEnvelope2D().getBounds2D();
   bounds2D.getCenterX();
  // calculate zoom level for the image
  GridGeometry2D geometry = image.getGridGeometry();
  
  
  
  BufferedImage img = ImageIO.read(f);
  // ColorModel colorModel = img.getColorModel(      
  WritableRaster raster = img.getRaster();
  
  int numBands = raster.getNumBands();
  
  int w = img.getWidth();
  int h = img.getHeight();
  outer:
  for (int i = 0; i &lt; w; i++) {//width...
  
    for (int j = 0; j &lt; h; j++) {
  
      double[] latlon = geo(geometry, i, j);
      double lat = latlon[0];
      double lon = latlon[1];
  
      Double s = 0d;
  
      String originalBands = "";
      for (int k = 0; k &lt; numBands; k++) {
        double d = raster.getSampleDouble(i, j, k);
        originalBands += d + ",";
        s += d;
      }
  
      originalBands = originalBands.substring(0, originalBands.length() - 1);
      if (s.compareTo(0d) == 0) {
        continue;
      }
      String geoHash = GeohashUtils.encodeLatLon(lat, lon);
      //here do something with the bands, lat, long, geohash, etc....
  
      }
  
     }
  
     }
  
    private static double[] geo(GridGeometry2D geometry, int x, int y) throws Exception {
  
    //int zoomlevel = 1;
    Envelope2D pixelEnvelop = geometry.gridToWorld(new GridEnvelope2D(x, y, 1, 1));
  
    // pixelEnvelop.getCoordinateReferenceSystem().getName().getCodeSpace();
    return new double[]{pixelEnvelop.getCenterY(), pixelEnvelop.getCenterX()};
  
   }
  
   }
  </code></pre>
  
  <p>JDK Jars</p>
  
  <p><a href="https://i.stack.imgur.com/7qyjd.png" rel="noreferrer"><img src="https://i.stack.imgur.com/7qyjd.png" alt="JDK images jar"></a></p>
  
  <p>Other Jars</p>
  
  <p><a href="https://i.stack.imgur.com/q4Umc.png" rel="noreferrer"><img src="https://i.stack.imgur.com/q4Umc.png" alt="Part1"></a></p>
  
  <p><a href="https://i.stack.imgur.com/Ev63M.png" rel="noreferrer"><img src="https://i.stack.imgur.com/Ev63M.png" alt="part2"></a></p>
  
  <p>I also added classpath variable for GeoTools jars</p>
  
  <p><a href="https://i.stack.imgur.com/Oag4l.png" rel="noreferrer"><img src="https://i.stack.imgur.com/Oag4l.png" alt="classpath"></a></p>
  
  <p>Edit:</p>
  
  <p>My jai is working without GeoTools Integration, but when I add <code>gt-geotiff-14.4.jar</code> it try to add <code>JAI-core-1.1.3.jar</code> which conflicts with <code>jai-core.jar</code> in my JDK 1.7. So I removed <code>JAI-core-1.1.3.jar</code> and related jars but still it gives me same error.</p>