ZK исключение нулевого указателя Java в контроллере - PullRequest
0 голосов
/ 16 января 2012

Я получил ошибку при развертывании ZK

Jan 16, 2012 5:00:59 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [zkLoader] in context with path [/ZK509App6] threw exception
java.lang.NullPointerException
    at controller.jurnal.JournalController.<init>(JournalController.java:39)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)

вот мой класс JournalController.java

public class JournalController extends GenericForwardComposer {

    private Listbox listlk;
    private Datebox datebox;
    private koneksi k;
    private Connection c;
    private SimpleDateFormat sdf;
    private Button pilih;
    private Date dates;
    private jurnalDAO jd = new jurnalDAO(k.getConnection(), dates);


    public JournalController() {
    }

    public void onClick$pilih(Event e) throws Exception, SQLException {
        try {
            Date d = datebox.getValue();
            d = dates;
            ForwardEvent forwardEvt = (ForwardEvent) e;
            Listbox Listlk = (Listbox) forwardEvt.getOrigin().getTarget();
        } catch (Exception a) {
            a.printStackTrace();
        }
    }
    public List<Jurnal_tbl> getAllEvents() throws SQLException, Exception {

        return jd.getLKeuangan();
    }
}

строка (JournalController.java:39) частный журналDAO jd = новый журналDAO (k.getConnection (), даты);

для ссылок, это класс DAO

public class jurnalDAO {

    private Connection conn;
    private Date tanggal;

    public jurnalDAO(Connection conn, Date dates) {
        this.conn = conn;
        this.tanggal = dates;
    }


    public List<Jurnal_tbl> getLKeuangan() throws SQLException, Exception {
        PreparedStatement ps = null;

        try {
            List<Jurnal_tbl> llk = new ArrayList<Jurnal_tbl>();
            System.out.println("test1");


            String sql = "SELECT * from public.jurnal where tanggal = ?";
            ps = conn.prepareStatement(sql);
            ps.setDate(1, new java.sql.Date(tanggal.getTime()));
            System.out.println(ps.toString());;

            ResultSet rs = ps.executeQuery();
            Jurnal_tbl jt;
            while (rs.next()) {
                // llk.add(new Jurnal_tbl(rs.getString("kd_jurnal"), rs.getString("no_trans"), rs.getString("tanggal"), rs.getString("account"), rs.getString("descript"), rs.getString("dc"), rs.getDouble("amount"), rs.getString("no_item")));
                jt = new Jurnal_tbl();
                jt.setKode(rs.getString("kd_jurnal"));
                jt.setTransaksi(rs.getString("no_trans"));
                jt.setTanggal(rs.getString("tanggal"));
                jt.setAkun(rs.getString("akun"));
                jt.setDeskripsi(rs.getString("descript"));
                jt.setDC(rs.getString("dc"));
                jt.setAmount(rs.getDouble("amount"));
                jt.setItem(rs.getString("no_item"));
                llk.add(jt);
           }

            rs.close();
            return llk;
        } finally {
        }
    }
}

пожалуйста, помогите мне, ребята T.T это мой последний проект моего бакалавра Дигреса T.T

1 Ответ

2 голосов
/ 16 января 2012

Вы звоните k.getConnection(), но вы никогда не инициализировали k, поэтому его значение по умолчанию будет null. Это должно бросить NullPointerException. Какой объект вы ожидали , что он будет вызывать getConnection() на?

Как примечание, стоит обратить внимание на имена:

  • k - довольно бессмысленное имя для переменной экземпляра
  • Вы не согласны между "дневником" и "журналом"
  • Имя типа koneksi не соответствует соглашениям об именах Java (использование заглавных букв)
  • Имя переменной Listlk не соответствует соглашениям об именах Java (использование заглавных букв)
  • Имя типа Jurnal_tbl не соответствует соглашениям об именах Java (подчеркивание)

Дополнительно:

  • Вы почти никогда не должны ловить Exception
  • Вы должны закрыть ресурсы в finally блоках

(я не провел тщательный анализ кода - это только мои первые впечатления.)

...