java.lang.NullPointerException

package cn.dl;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

/**

  • @author n
    二维码玩玩
    */
    public class Qrcode {
    /
    *

    • @title:
    • @Description:二维码生成
    • @param content
    • @param imgPath */

    public static void getQrcodeImg(String content,String imgPath) {

    //实例化Qrcode对象
    Qrcode qrcode = new Qrcode();
    qrcode.setQrcodeErrorCorrect('M');
    qrcode.setQrcodeEncodeMode('B');
    qrcode.setQrcodeVersion(15);
    
    int width = 235;
    int height = 235;
    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
    Graphics2D gs = image.createGraphics();
    gs.setBackground(Color.white);
    gs.clearRect(0, 0, width, height);
    gs.setColor(Color.black);
    
    try {
        byte[] codeOut;
        codeOut = content.getBytes("utf-8");
    

    ** boolean[][] code = qrcode.calQrcode(codeOut);**
    for (int i = 0; i< code.length; i++) {
    for (int j = 0; j < code.length; j++) {
    if (code[j][i]) {
    gs.fillRect(j*3+2, i*3+2, 3, 3);

    }

    }

    }

        gs.dispose();
        image.flush();
        //保存
        ImageIO.write(image, "png", new File(imgPath));
        System.out.println("我的二维码在哪里");
    
    } catch (Exception e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    }
    

    }

    private boolean[][] calQrcode(byte[] codeOut) {
    // TODO 自动生成的方法存根
    return null;
    }

    private void setQrcodeVersion(int i) {
    // TODO 自动生成的方法存根

    }

    private void setQrcodeEncodeMode(char c) {
    // TODO 自动生成的方法存根

    }

    private void setQrcodeErrorCorrect(char c) {
    // TODO 自动生成的方法存根

    }

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    **getQrcodeImg("我爱我们","D:/Lin/JavaText/cn.dl/lin.png");
    **
    }

}

最好把调用栈发出来,这样能准确知道null异常出现的代码位置
main()函数中,代码改成这样,运行时就有栈信息了
try{
getQrcodeImg("我爱我们","D:/Lin/JavaText/cn.dl/lin.png");

} catch(Exception ex){
ex.pirntStackTrace();
}

从代码来看,大致应是如下代码的位置出了问题
for (int i = 0; i< code.length; i++) {

原因是这个函数返回的是null,code引用当然不能用了
private boolean[][] calQrcode(byte[] codeOut) {
// TODO 自动生成的方法存根
return null;
}