Hi, I'm dynamiclly creating image files through screenshot utility of java(prog name:- Test_ScreenShot.java) and saving them in memory sequentially(pic0.jpg,pic1.jpg....etc).Simultaneously I'm accessing the saved files from another independent application(Prog name:- Test_Main.java) through piping(executing the application like this "Java Test_ScreenShot|Java Test_Main").The application is in infinite loop.I'm using Version JDK 1.5 I use java ImageIO to read and write image:- My application was running well for days.But now I'm getting sudden exceptions. I got an excepton while trying to save an dynamically generated image file in the local memory using the ImageIO class.In brief I'm getting exactly 3 types of exceptions:- 1)java.io.FileNotFoundException: pic5.jpg (Access is denied) 2)"Exception in thread "main" java.lang.NullPointerException 3)Exception in thread "main" com.sun.image.codec.jpeg.ImageFormatException: Not a JPEG file: starts with 0xff 0xd9 Here is the code snippent I wrote: /* Robot robot = new Robot(); BufferedImage image = robot.createScreenCapture(screenRect); // save captured image to jpg file ImageIO.write(image, "jpg", new File(outFileName));*/ And here is the exception I am finding (I never found this before, I executed the code many times ) ===================================================================================================================== 1)Exception Type 1:- java.io.FileNotFoundException: pic5.jpg (Access is denied) at java.io.RandomAccessFile.open(Native Method) at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212) at javax.imageio.stream.FileImageOutputStream.<init>(FileImageOutputStream.java:44) at com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(FileImageOutputStreamSpi.java:37) at javax.imageio.ImageIO.createImageOutputStream(ImageIO.java:391) at javax.imageio.ImageIO.write(ImageIO.java:1483) at Test_ScreenShot.main(Test_ScreenShot.java:112) at Test_Main.main(Test_Main.java:466) at Test_ScreenShot.main(Test_ScreenShot.java:129) 2)Exception Type 2:- "Exception in thread "main" java.lang.NullPointerException at Picture.width(Picture.java:84) at Test_Edge_Detector.not_main(Test_Edge_Detector.java:38) at Test_Main.main(Test_Main.java:88)" ============================================================================================ Now I tried the following as alternative of ImageIO(from jdk 1.2) to read image:- FileInputStream fis = new FileInputStream(file); JPEGImageDecoder jpeg = JPEGCodec.createJPEGDecoder(fis); jpeg.decodeAsBufferedImage(); fis.close(); But after running a long time suddenly its giving following exceptions:- ============================================================================================== Exception Type 3:- ) Exception in thread "main" com.sun.image.codec.jpeg.ImageFormatException: Not a JPEG file: starts with 0xff 0xd9 at sun.awt.image.codec.JPEGImageDecoderImpl.readJPEGStream(Native Method) at sun.awt.image.codec.JPEGImageDecoderImpl.decodeAsBufferedImage(Unknown Source) Exception Type 4:- ) javax.imageio.IIOException: Not a JPEG file: starts with 0xff 0xd9 at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImageHeader(Native Method) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readNativeHeader(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.checkTablesOnly(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.gotoImage(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readHeader(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(Unknown Source) at javax.imageio.ImageIO.read(Unknown Source) at javax.imageio.ImageIO.read(Unknown Source) at Picture.<init>(Picture.java:22) at Test_Edge_Detector.not_main(Test_Edge_Detector.java:37) at Test_Main.main(Test_Main.java:88) Exception in thread "main" java.lang.RuntimeException: Could not open file: pic45.jpg at Picture.<init>(Picture.java:27) at Test_Edge_Detector.not_main(Test_Edge_Detector.java:37) at Test_Main.main(Test_Main.java:88) My question is:- 1)Where is the actual problem?Is it any kind of bug? 2)I'm using the concept of piping recently to execute the application.Can it be the cause? When I googled I found the following informations.There is a bug in ImageIO while trying to write image file.But I'm not sure about that it will be relevent here :- 1)from sun's bug database:- http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6247985 2)from SUN Developer Forums http://forum.java.sun.com/thread.jspa?threadID=768917&messageID=4382833 3)from Java.NET forum(here they r getting the bug while they r using createScreenCapture() method of robot class,I am also using that in my code) http://forums.java.net/jive/thread.jspa?messageID=123247 4)from SUN's archieve http://archives.java.sun.com/cgi-bin/wa?A2=ind0207&L=java-imageio-interest&D=0&P=1483 5)Here is the actual implemetation of ImageIO class.I'm getting error at 391 no. line. http://kickjava.com/src/javax/imageio/ImageIO.java.htm Thanks And Regards Subhadip
help,ImageIO
Started by ●October 25, 2006