Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Exception in thread "AWT-EventQueue-0" java.lang.N


Автор: skif18 27.11.2007, 18:31
Что за дрэг? Или я туплю?
Подскажите люди добрые начинающему программеру в Яве!
Ошибка в консоле Eclipse 3.2.2:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.JList$2.getSize(Unknown Source)
    at javax.swing.JList.getPreferredScrollableViewportSize(Unknown Source)
    at javax.swing.ViewportLayout.preferredLayoutSize(Unknown Source)
    at java.awt.Container.preferredSize(Unknown Source)
    at java.awt.Container.getPreferredSize(Unknown Source)
    at javax.swing.JComponent.getPreferredSize(Unknown Source)
    at javax.swing.ScrollPaneLayout.preferredLayoutSize(Unknown Source)
    at java.awt.Container.preferredSize(Unknown Source)
    at java.awt.Container.getPreferredSize(Unknown Source)
    at javax.swing.JComponent.getPreferredSize(Unknown Source)
    at java.awt.FlowLayout.preferredLayoutSize(Unknown Source)
    at java.awt.Container.preferredSize(Unknown Source)
    at java.awt.Container.getPreferredSize(Unknown Source)
    at javax.swing.JComponent.getPreferredSize(Unknown Source)
    at java.awt.BorderLayout.layoutContainer(Unknown Source)
    at java.awt.Container.layout(Unknown Source)
    at java.awt.Container.doLayout(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validateTree(Unknown Source)
    at java.awt.Container.validate(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

P.S.
Прога большая. Если надо выложу...(переделка из статей Сабурова Антона по "Студенческий отдел кадров") Но мне просто узнать что за ошибка дальше сам хочу покопать как решить.

Проэкт в Еклипсе прилагаю.

Автор: Kangaroo 27.11.2007, 18:43
skif18, 
код покажи.

Автор: skif18 27.11.2007, 18:44
Проэкт присоединил! Смотрите. Может я чего то не догоняю. Хотя не "может", а точно не догоняю! smile 

Автор: naPz 28.11.2007, 01:33
А почему у тебя в менеджмент систем такие запросы странные

Код


PreparedStatement stmt = con.prepareStatement(
        "INSERT INTO obedi "+
        "(date, code_pers, code_bl, kol) " +
        "VALUES (DATE(), ?, ?, 1)");
//    stmt.setString(1, student.getFirstName());
    stmt.setString(2, student.getPatronymic());
    stmt.setString(3, student.getSurName());
    stmt.setString(4, new String(new char[] {student.getSex()} ));
    stmt.setDate(5, new Date(student.getDateOfBirth().getTime()));
    stmt.setInt(6, student.getGroupId());
    stmt.setInt(7, student.getEducationYear());

    stmt.execute();



И такое почти везде где PreparedStatement используется. Чето сеттеров много.

Автор: skif18 28.11.2007, 10:00
naPz, ты прав сеттеров много. Убрал. Та же ошибка.
Так Правильно?
Код


package students.logic;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.swing.JSpinner;

public class ManagementSystem
{
  private static Connection con; 
  private static ManagementSystem instance;

  private ManagementSystem() {
    try {
      Class.forName("org.postgresql.Driver");
      String url = "jdbc:postgresql://localhost:5432/stol";
      con = DriverManager.getConnection(url,"postgres", "syrus");
    } catch (ClassNotFoundException e1) {
      e1.printStackTrace();
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  public static synchronized ManagementSystem getInstance()
  {
    if (instance == null) {
      instance = new ManagementSystem();
    }
    return instance;
  }

  public List getGroups() throws SQLException
  {
    List groups = new ArrayList();
    
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT idn, code, descr, ceh FROM personal");
    while(rs.next()) {
//      Group gr = new Group();
//      gr.setGroupId(rs.getInt(1));
//      gr.setNameGroup(rs.getString(2));
//      gr.setCurator(rs.getString(3));
//      gr.setSpeciality(rs.getString(4));

//      groups.add(gr);
    }
    rs.close();
    stmt.close();
    
    return groups;
  }
   
  public Collection getPers(String y) throws SQLException 
  {
    Collection students = new ArrayList();
try {
    PreparedStatement stmt = con.prepareStatement(
        "SELECT idn, code,descr,ceh "+
        " FROM personal " +
        "WHERE code=?");
//    stmt.setInt(1, group.getGroupId());
    stmt.setString(1, y);
    ResultSet rs = stmt.executeQuery();
    while(rs.next()) {
      Student st = new Student(rs);
    
      students.add(st);
      rs.close();
      stmt.close();
    }
}
    catch(NullPointerException e){
     e.printStackTrace();
    }
    return students;
  }
  
  
  
  public Collection getAllStudents() throws SQLException
  {
    Collection students = new ArrayList();

    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(
        "SELECT id, code_pers,code_bl,kol,suma "+
        " FROM obedi ORDER BY id");
    while(rs.next()) {
      Student st = new Student(rs);
      students.add(st);
    }
    rs.close();
    stmt.close();

    return students;
  }

  public Collection getStudentsFromGroup(String y) throws SQLException 
  {
    Collection students = new ArrayList();

    PreparedStatement stmt = con.prepareStatement(
        "SELECT id, code_pers,code_bl,kol,suma, "+
        " FROM obedi " +
        "WHERE code_pers=? "+
        "ORDER BY date,id");
    stmt.setString(1, y);
//    stmt.setInt(2, year);
    ResultSet rs = stmt.executeQuery();
    while(rs.next()) {
      Student st = new Student(rs);
    
      students.add(st);
    }
    rs.close();
    stmt.close();
    
    return students;
  }

//  public void moveStudentsToGroup(Group oldGroup, int oldYear, Group newGroup, int newYear) throws SQLException
//  {
//    PreparedStatement stmt = con.prepareStatement(
//        "UPDATE obedi SET code_pers=?" +
//        "WHERE code_pers=? ");
//    stmt.setInt(1, newGroup.getGroupId());
//    stmt.setInt(2, newYear);
//    stmt.setInt(3, oldGroup.getGroupId());
//    stmt.setInt(4, oldYear);
//    stmt.execute();
//  }
    
  public void removeStudentsFromGroup(String y) throws SQLException
  {
    PreparedStatement stmt = con.prepareStatement(
        "DELETE FROM obedi WHERE code_pers=?");
    stmt.setString(1, y);
//    stmt.setInt(2, year);
    stmt.execute();
  }

  public void insertStudent(Student student,String y) throws SQLException
  {
    PreparedStatement stmt = con.prepareStatement(
        "INSERT INTO obedi "+
        "(date, code_pers, code_bl, kol) " +
        "VALUES (DATE(), ?, ?, 1)");
//    stmt.setString(1, student.getFirstName());
    stmt.setString(2, y);
    stmt.setString(3, student.getSurName());
//    stmt.setString(4, new String(new char[] {student.getSex()} ));
//    stmt.setDate(5, new Date(student.getDateOfBirth().getTime()));
//    stmt.setInt(6, student.getGroupId());
//    stmt.setInt(7, student.getEducationYear());

    stmt.execute();
  }
    
  public void updateStudent(Student student) throws SQLException
  {
//    PreparedStatement stmt = con.prepareStatement(
//        "UPDATE students SET "+
//        "firstName=?, patronymic=?, surName=?, "+
//        "sex=?, dateOfBirth=?, group_id=?, educationYear=? " +
//        "WHERE student_id=?");
//    stmt.setString(1, student.getFirstName());
//    stmt.setString(2, student.getPatronymic());
//    stmt.setString(3, student.getSurName()); 
  }
  public void deleteStudent(Student student) throws SQLException

  {

//    PreparedStatement stmt = con.prepareStatement(

//      "DELETE FROM students WHERE student_id=?");

//    stmt.setInt(1, student.getStudentId());

//    stmt.execute();

  }


}


Извините за дурацкие ошибки и вопросы - только начал Явой заниматься.

Автор: Foo 28.11.2007, 10:28
судя по ошибке - Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException, ты работаеш гдето с GUI не в потоке EventDispatchThread, в котором должна происходить вся работа с GUI. Возможно гдето тебе нужно исопользовать SwingWorker или SwingUtilities.invokeLater(). Еслибы ты выложил приложение со всеми необходимыми либами и убрал работу с БД, чтобы его можно было запустить, можно былобы сказать чтото более конкретное.

Автор: skif18 16.12.2007, 00:33
Все получилось . Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)