diff -Naru java3d.orig/files/patch-ImageComponentState.java java3d/files/patch-ImageComponentState.java
--- java3d.orig/files/patch-ImageComponentState.java 1970-01-01 01:00:00.000000000 +0100
+++ java3d/files/patch-ImageComponentState.java 2013-05-18 18:11:46.000000000 +0200
@@ -0,0 +1,50 @@
+work/java3d-1.5.2/j3d-core-utils/src/classes/share/com/sun/j3d/utils/scenegraph/io/state/javax/media/j3d
+--- j3d-core-utils/src/classes/share/com/sun/j3d/utils/scenegraph/io/state/javax/media/j3d/ImageComponentState.java.orig
++++ j3d-core-utils/src/classes/share/com/sun/j3d/utils/scenegraph/io/state/javax/media/j3d/ImageComponentState.java
+@@ -61,10 +61,7 @@ import com.sun.j3d.utils.scenegraph.io.r
+ import com.sun.j3d.utils.scenegraph.io.retained.SGIORuntimeException;
+ import java.awt.color.ColorSpace;
+ import java.awt.image.DataBuffer;
+-import com.sun.image.codec.jpeg.JPEGImageEncoder;
+-import com.sun.image.codec.jpeg.JPEGImageDecoder;
+-import com.sun.image.codec.jpeg.JPEGCodec;
+-import com.sun.image.codec.jpeg.JPEGEncodeParam;
++import javax.imageio.ImageIO;
+
+ public abstract class ImageComponentState extends NodeComponentState {
+
+@@ -203,10 +200,9 @@ public abstract class ImageComponentStat
+
+ private void writeBufferedImageJpegCompression( DataOutput out, BufferedImage image ) throws IOException {
+ ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
+- JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder( byteStream );
+-
+- encoder.encode( image );
+- byteStream.close();
++ if (!ImageIO.write(image, "jpeg", byteStream)) {
++ throw new AssertionError("No JPEG encoder available");
++ }
+
+ byte[] buffer = byteStream.toByteArray();
+ out.writeInt( buffer.length );
+@@ -261,11 +257,15 @@ public abstract class ImageComponentStat
+ byte[] buffer = new byte[ size ];
+ in.readFully( buffer );
+ ByteArrayInputStream byteStream = new ByteArrayInputStream( buffer );
+-
+- JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder( byteStream );
+- byteStream.close();
+-
+- return decoder.decodeAsBufferedImage();
++ try {
++ BufferedImage img = ImageIO.read(byteStream);
++ if (img == null) {
++ throw new AssertionError("No ImageReader available.");
++ }
++ return img;
++ } finally {
++ byteStream.close();
++ }
+ }
+
+ private void writeColorModel( DataOutput out, ColorModel colorModel ) throws IOException {
diff -Naru java3d.orig/files/patch-freebsd java3d/files/patch-freebsd
--- java3d.orig/files/patch-freebsd 2013-05-18 23:35:31.000000000 +0200
+++ java3d/files/patch-freebsd 2013-05-18 18:11:46.000000000 +0200
@@ -88,6 +88,14 @@
+@@ -347,6 +360,7 @@
+
+
+
++
+
+
+
diff -ruN ../java3d-1.5.2/j3d-core/src/native/ogl/build-freebsd.xml ./j3d-core/src/native/ogl/build-freebsd.xml
--- ../java3d-1.5.2/j3d-core/src/native/ogl/build-freebsd.xml 1970-01-01 12:00:00.000000000 +1200
+++ ./j3d-core/src/native/ogl/build-freebsd.xml 2009-07-12 13:21:41.000000000 +1200