みなさん、私は春のJavaプログラミングが初めてです。クリック操作でデータベースにアクセスする Java プログラムを作成しましたが、すべてのオブジェクトが適切に設定されているため、nullpointer 例外が発生する理由がわかりません。
スイングコード:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.ibm.quest.taxonomyupdate.ui;
import com.ibm.quest.taxonomyupdate.model.TypeCategory;
import com.ibm.quest.taxonomyupdate.model.TypeCategoryJDBCTemplate;
import javax.swing.ButtonGroup;
/**
*
* @author Ashish Tyagi
*/
public class ApplicationWindow extends javax.swing.JFrame {
TypeCategoryJDBCTemplate typeCategoryJDBCtemplate;
/**
* Creates new form ApplicationWindow
*/
public void setTypeCategoryJDBCtemplate(TypeCategoryJDBCTemplate typeCategoryJDBCtemplate) {
this.typeCategoryJDBCtemplate = typeCategoryJDBCtemplate;
System.err.println("setter in the application window "+this.typeCategoryJDBCtemplate);
}
public ApplicationWindow() {
initComponents();
addRadioButtonInGroup();
setTitle("Taxonomy Updator");
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
buttonGroup = new javax.swing.ButtonGroup();
infoLabel = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
searchButton = new javax.swing.JButton();
beginButton = new javax.swing.JRadioButton();
endButton = new javax.swing.JRadioButton();
exactButton = new javax.swing.JRadioButton();
anywhereButton = new javax.swing.JRadioButton();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
closeButton = new javax.swing.JButton();
updateAllButton = new javax.swing.JButton();
updateButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new java.awt.GridBagLayout());
infoLabel.setText("Please enter the text you wants to search");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(11, 10, 0, 0);
getContentPane().add(infoLabel, gridBagConstraints);
jTextField1.setText("jTextField1");
jTextField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 10;
gridBagConstraints.ipadx = 279;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(6, 10, 0, 0);
getContentPane().add(jTextField1, gridBagConstraints);
searchButton.setText("Search");
searchButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
searchButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 19;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 25;
gridBagConstraints.ipadx = 17;
gridBagConstraints.ipady = -3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(6, 6, 0, 10);
getContentPane().add(searchButton, gridBagConstraints);
beginButton.setText("Begin with");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(2, 10, 0, 0);
getContentPane().add(beginButton, gridBagConstraints);
endButton.setText("End with");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
getContentPane().add(endButton, gridBagConstraints);
exactButton.setText("Exact Match");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
getContentPane().add(exactButton, gridBagConstraints);
anywhereButton.setText("Anywhere");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 9;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 11;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
getContentPane().add(anywhereButton, gridBagConstraints);
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTable1);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 44;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.ipadx = 351;
gridBagConstraints.ipady = 60;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(2, 10, 0, 10);
getContentPane().add(jScrollPane1, gridBagConstraints);
closeButton.setText("Close");
closeButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
closeButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 43;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(175, 6, 0, 10);
getContentPane().add(closeButton, gridBagConstraints);
updateAllButton.setText("Update All");
updateAllButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
updateAllButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = 24;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(175, 6, 0, 0);
getContentPane().add(updateAllButton, gridBagConstraints);
updateButton.setText("Update");
updateButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
updateButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(175, 8, 0, 0);
getContentPane().add(updateButton, gridBagConstraints);
pack();
}// </editor-fold>
private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {
String text = jTextField1.getText();
java.util.List<TypeCategory> records = this.typeCategoryJDBCtemplate.listTypeCategory(text);
for(TypeCategory value:records)
System.out.println(value.getDescription()+" "+value.getTaxonomydescription());
}
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void updateButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void updateAllButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.dispose();
}
/**
* @param args the command line arguments
*/
public void start() {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(ApplicationWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(ApplicationWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(ApplicationWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(ApplicationWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ApplicationWindow().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JRadioButton anywhereButton;
private javax.swing.JRadioButton beginButton;
private javax.swing.ButtonGroup buttonGroup;
private javax.swing.JButton closeButton;
private javax.swing.JRadioButton endButton;
private javax.swing.JRadioButton exactButton;
private javax.swing.JLabel infoLabel;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField jTextField1;
private javax.swing.JButton searchButton;
private javax.swing.JButton updateAllButton;
private javax.swing.JButton updateButton;
// End of variables declaration
private void addRadioButtonInGroup() {
buttonGroup = new ButtonGroup();
buttonGroup.add(beginButton);
buttonGroup.add(endButton);
buttonGroup.add(exactButton);
buttonGroup.add(anywhereButton);
}
}
メインファイル:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.ibm.quest.taxonomyupdate;
import com.ibm.quest.taxonomyupdate.model.TypeCategoryJDBCTemplate;
import org.springframework.context.ApplicationContext;
import com.ibm.quest.taxonomyupdate.ui.ApplicationWindow;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
*
* @author Ashish Tyagi
*/
public class TaxonomyUpdater {
public static void main(String [] args){
ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Config.xml");
ApplicationWindow window= (ApplicationWindow) context.getBean("applicationWindow");
window.start();
// TypeCategoryJDBCTemplate typecategoryJDBCTemplate = (TypeCategoryJDBCTemplate)context.getBean("typeCategoryJDBCTemplate");
// window.setTypeCategoryJDBCtemplate(typecategoryJDBCTemplate);
// List<TypeCategory> records=typecategoryJDBCTemplate.listTypeCategory("Q2%");
// for(TypeCategory value:records)
// System.out.println(value.getTypecatind()+" "+value.getDescription()+" "+value.getTaxonomydescription());
}
}
Spring-Config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:flow="http://www.springframework.org/schema/webflow-config"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:jms="http://www.springframework.org/schema/jms"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:osgi="http://www.springframework.org/schema/osgi"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.2.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.2.xsd
http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver" />
<property name="url" value="jdbc:db2://sample.sample.com:3798/sampledb"/>
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="typeCategoryJDBCTemplate" class="com.ibm.quest.taxonomyupdate.model.TypeCategoryJDBCTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="applicationWindow" class="com.ibm.quest.taxonomyupdate.ui.ApplicationWindow">
<property name="typeCategoryJDBCtemplate" ref="typeCategoryJDBCTemplate" />
</bean>
</beans>
オブジェクトが作成されていることを確認しているが、まだ null ポインター例外が発生しているログ。
Mar 17, 2013 12:24:51 AM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
INFO: Loaded JDBC driver: com.ibm.db2.jcc.DB2Driver
Inside the setDataSoureorg.springframework.jdbc.datasource.DriverManagerDataSource@4389b7
setter in the application window com.ibm.quest.taxonomyupdate.model.TypeCategoryJDBCTemplate@18c6fd4
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.ibm.quest.taxonomyupdate.ui.ApplicationWindow.searchButtonActionPerformed(ApplicationWindow.java:207)
at com.ibm.quest.taxonomyupdate.ui.ApplicationWindow.access$100(ApplicationWindow.java:15)
at com.ibm.quest.taxonomyupdate.ui.ApplicationWindow$2.actionPerformed(ApplicationWindow.java:88)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)