【发布时间】:2011-08-18 07:44:43
【问题描述】:
我正在使用 java swing 创建这个登录表单,我基本上做的是从相关的 JtextFields 中获取值并将它们发送到另一个类。此后我用数据库记录检查它。但是,每次我运行该程序时,它总是显示 NullPointerException。我测试了每个变量,发现它们都没有包含任何 Null 值。
这是从 JTextField 获取值的第一个方法(在 LoginPage 类中)
public void actionPerformed(ActionEvent e) {
String user=textField.getText();
String pass=String.valueOf(passwordField.getPassword());
//try{
//if((user!=null)&&(pass!=null)){
// System.out.println("user is not null");
ui.sendLogin(user,pass);
//}else{}
//}catch(NullPointerException ex){
//System.out.println("Entered catch block og view"+ex.getMessage());
//}
}
然后它调用这个方法(在类 LoginController 中)
public void sendLogin(String user, String pass) {
try{
System.out.println("values from sendLogin"+user+"pass"+pass);
model.verifyUser(user,pass);
}catch(NullPointerException ex){
System.out.println("Entered catch block os sendLogin"+ex);
ex.printStackTrace();
}
}
最后,verifyUser 方法(在 LoginModel 类中)用数据库检查它
public void verifyUser(String user,String pass){
String username="";
String password="";
String acc="";
try{
String sql="SELECT * FROM users";
con1.getInstance();
Statement st = con1.getConn().createStatement();
ResultSet rs=st.executeQuery(sql);
rs.next();
username=rs.getString("username");
password=rs.getString("password");
acc=rs.getString("accountType");
if(username.equals(user)&&password.equals(pass)){
System.out.println("Logged into the system");
global_username=username;
accountType=acc;
}else{
System.out.println("Unsuccessful login"+username+user+password+pass);
}
st.execute(sql);
} catch (SQLException s){
System.out.println("SQL statement is not executed!"+s);
}
}
这是堆栈跟踪
java.lang.NullPointerException
at org.application.view.LoginController.sendLogin(LoginController.java:64)
at org.application.view.LoginPage$2.actionPerformed(LoginPage.java:94)
user is not null
values from sendLoginapassabc
Entered catch block os sendLoginjava.lang.NullPointerException
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(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)
【问题讨论】:
-
你检查过
model != null吗? -
虽然我同意有人建议
model是null,但是您两次发布了sendLogin方法的内容,其中一个应该是verifyUser -
第 64 行 LoginController.java 是什么?堆栈跟踪表明这一行是错误...它可能是
model对象或verifyUserfunction -
@mustafabattal 是的,我错误地两次发布了相同的方法。对不起,我现在更正了。 Charliemops的LoginController line 64是model.verifyUser(user,pass)
标签: java compiler-errors nullpointerexception initialization