问题描述如下:
init:
deps-jar:
compile:
run:
Exception in thread "main" java.lang.NullPointerException
        at sun.awt.image.codec.JPEGImageEncoderImpl.getDefaultJPEGEncodeParam(JPEGImageEncoderImpl.java:174)
        at sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:205)
        at waterset.P4.createJpg(P4.java:26)
        at waterset.Main.main(Main.java:77)
Java Result: 1
成功生成(总时间:1 秒)
源程序如下:
package waterset;
import java.awt.*;
import java.awt.image.*;
import java.awt.AlphaComposite.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import com.sun.image.codec.jpeg.*;
/**
 *
 * @author Owner
 */
public class P4 {
    BufferedImage image;    public void createJpg(String path) {
    try {
      FileOutputStream fos = new FileOutputStream(path);
      BufferedOutputStream bos = new BufferedOutputStream(fos);
      JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
      encoder.encode(image);      
       bos.close(); 
    } catch(FileNotFoundException fnfe) {
      System.out.println(fnfe);
    } catch(IOException ioe) {
      System.out.println(ioe);
    }
  }  
    public void overlapPictures(BufferedImage p1, BufferedImage p2,int startOverlap)
{  int amountOverlap = p1.getWidth() - startOverlap;
   Graphics g =p1.getGraphics();
   Graphics2D g2 = (Graphics2D) g;
   
   g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,(float) 1.0f));
   g2.drawImage(p2,0,0,startOverlap,p1.getHeight(),null);
   g2.drawImage(p1,startOverlap,0,p1.getWidth(),p1.getHeight(),null);
   
   g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f));
   
   g2.drawImage(p2,startOverlap,0,p1.getWidth(),p2.getHeight(),0,0,amountOverlap,p2.getHeight(),null);
   
   g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,(float) 1.0f));
   g2.drawImage(p2,p1.getWidth(),0,p2.getWidth()+startOverlap,p2.getHeight(),amountOverlap,0,p2.getWidth(),p2.getHeight(),null);
      
   }}
主类:
public class Main {
public static void main(String[] args) {
         File file1=new File("d:\\1A.jpg");
         File file2=new File("d:\\1B.jpg");
         P4 p1=new P4();
         P4 p2=new P4();
         P4 p3=new P4();
         try {
         p1.image = ImageIO.read(file1);
         p2.image = ImageIO.read(file2);
     } catch(IOException ioe) {
      System.out.println(ioe);
    }
    p3.overlapPictures(p1.image,p2.image,0);
    p3.createJpg("d:\\waterset.jpg");    
    }}
请大家帮我看看怎么回事啊~~~~