萌仙空指针异常错误这是怎么回事

当前位置: >
> spring新手main方法报空指针异常,请大家帮忙看看什么原因。publicclassCompu
spring新手main方法报空指针异常,请大家帮忙看看什么原因。publicclassCompu
houpei0510 & at
spring新手main方法报空指针异常,请大家帮忙看看什么原因。
public&class&Computer&{
private&Host&
private&Display&
public&void&run(){
System.out.println("I&am&the&computer,&I&am&running.");
System.out.println(this.host.run());
System.out.println(this.display.run());
public&Host&getHost()&{
public&void&setHost(Host&host)&{
this.host&=&
public&Display&getDisplay()&{
public&void&setDisplay(Display&display)&{
this.display&=&
public&class&Host&{
public&String&run(){
return&"I&am&the&host,&I&am&running.";
public&class&Display&{
public&String&run(){
return&"I&am&the&Displayer,&I&am&running.";
package&ioc.
import&orntext.ApplicationC
import&orntext.support.ClassPathXmlApplicationC
public&class&TestIoc&{
public&static&void&main(String[]&args){
ApplicationContext&ac&=&new&ClassPathXmlApplicationContext("applicationContext.xml");
Computer&computer1&=&(Computer)ac.getBean("computer1");
System.out.println("byName");
computer1.run();
Computer&computer2&=&(Computer)ac.getBean("computer2");
System.out.println("byType");
computer2.run();
Computer&computer3&=&(Computer)ac.getBean("computer3");
System.out.println("default");
computer3.run();
& xml&version="1.0"&encoding="UTF-8" &
xmlns:xsi=""
xmlns:p=""
xsi:schemaLocation=";"&
&bean&id="computer1"&class="puter"&autowire="byName"$>$/bean&
&bean&id="computer2"&class="puter"&autowire="byType"$>$/bean&
&bean&id="computer3"&class="puter"&autowire="default"$>$/bean&
就这些,大家帮忙看看,谢谢啦。当你指定bean标签的autowire="default"时,此时spring是根据beans标签中的default-autowire属性的值进行装配的,而default-autowire的默认值是no,所以你通过spring获取到的id="computer3"的对象实例中成员变量host和display都没有初始化,所以当你调用它们中的方法时就抛空指针异常了自己找到一些原因了,Host和Display的对象在调用run方法时候也需要初使化,所以也需要注入
& xml&version="1.0"&encoding="UTF-8" &
xmlns:xsi=""
xmlns:p=""
xsi:schemaLocation=";"&
&bean&id="computer1"&class="puter"&autowire="byName"$>$/bean&
&bean&id="computer2"&class="puter"&autowire="byType"$>$/bean&
&bean&id="computer3"&class="puter"&autowire="default"$>$/bean&
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-数据模型传递更新JTable出现空指针错误 学生_服务端可以接受到2个对象,但第二个对象和第一个是一样的,是咋回事_熟习JNI的进__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
数据模型传递更新JTable出现空指针错误 学生
服务端可以接受到2个对象,但第二个对象和第一个是一样的,是咋回事
熟习JNI的进
数据模型传递更新JTable出现空指针错误 学生
数据模型传递更新JTable出现空指针异常 学生求助有两个java文件,一个是模型,装了对表的查询操作,import语句都删了,
****************************************StuModel.java******************************************
public class StuModel extends AbstractTableModel{
Vector rowData,columnN
Connection con=
PreparedStatement ps=
ResultSet rs=
//做一个构造函数,用于初始化我们的数据模型
public void init(String sql){
if(sql.equals("")){
sql="select *from student";
columnNames=new Vector();//设置列名
columnNames.add("学号");
columnNames.add("名字");
columnNames.add("性别");
columnNames.add("生日");
columnNames.add("地址");
rowData=new Vector();//可以存放多行
Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/example","test1","520999");
System.out.println("连接数据库服务器成功");
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Vector hang=new Vector();
hang.add(rs.getInt("num"));
hang.add(rs.getString("name"));
hang.add(rs.getString("sex"));
hang.add(rs.getString("birthday"));
hang.add(rs.getString("address"));
rowData.add(hang);
}catch(Exception e){
e.printStackTrace();
if(rs!=null){
rs.close();
if(ps!=null){
ps.close();
if(con!=null){
con.close();
} catch(Exception e){
e.printStackTrace();
public void addStu(String sql){
//根据用户输入的sql语句,完成添加任务
//通过传递的sql语句来获得数据模型
public StuModel(String sql){
this.init(sql);
public StuModel(){
this.init("");
//得到共有多少列
public int getColumnCount() {
// TODO Auto-generated method stub
return this.columnNames.size();
public String getColumnName(int column) {
// TODO Auto-generated method stub
return (String)this.columnNames.get(column);
//得到共有多少行
public int getRowCount() {
// TODO Auto-generated method stub
return this.rowData.size();
//得到某行某列的数据
public Object getValueAt(int row, int column) {
// TODO Auto-generated method stub
return ((Vector)this.rowData.get(row)).get(column);
*****************************************Test3.java*********************************************
public class Test3 extends JFrame implements ActionListener{
JPanel jp1,jp2;
JLabel jl1;
JButton jb1,jb2,jb3,jb4;
public static void main(String[] args){
Test3 test3=new Test3();
//构造函数
public Test3(){
jp1=new JPanel();
jtf=new JTextField(10);
jb1=new JButton("查询");
jb1.addActionListener(this);
jl1=new JLabel("请输入名字");
//把各个控件加入到jp1
jp1.add(jl1);
jp1.add(jtf);
jp1.add(jb1);
jp2=new JPanel();
jb2=new JButton("添加");
jb3=new JButton("修改");
jb4=new JButton("删除");
//把各个控件加入到jp2
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
//创建一个数据模型对象
StuModel sm=new StuModel();
//初始化JTable
JTable jt=new JTable(sm);
//初始化jsp JScrollPane
jsp=new JScrollPane(jt);
//把jsp放入到JFrame
this.add(jsp);
this.add(jp1,"North");
this.add(jp2,"South");
this.setSize(400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
public void actionPerformed(ActionEvent arg0){
//判断哪个按钮被点击
if(arg0.getSource()==jb1){
System.out.println("用户希望查询");
//因为把对表的数据封装到StuModel中,我们就可以比较简单的完成查询
String tempname=jtf.getText().trim();
//写一个sql语句
String sql="select *from student Where name='tempname'";
//构建新的数据模型类,并更新
StuModel sm=new StuModel(sql);
//更新JTable
jt.setModel(sm);
********************************************************************************
运行的时候可以运行,但是当输出名字查询的时候就会报错:
java.lang.NullPointerException
at com.test1.Test3.actionPerformed(Test3.java:70) //就是jt.setModel(sm);这句话。
重置JTable的时候为什么会出错啊,,求助求助求助------最佳解决方案--------------------47行,JTable jt = new JTable(sm);
只补始化了一个局部变量,
70行使用的全局jt 没有初始化------其他解决方案--------------------没人么
服务端可以接受到2个对象,但第二个对象和第一个是一样的,是咋回事
服务端可以接受到2个对象,但第二个对象和第一个是一样的,是怎么回事啊为什么我传输对象时,客户端发送2个不同的对象,
服务端可以接受到2个对象,但第二个对象和第一个是一样的,是怎么回事啊!??!
public Client()
MessageClass messageobject=new MessageClass("login");
messageobject.SetLoginUserInfo("","12345","magicgiant");
client=new Socket("localhost",1234);
System.out.println("已建立连接!");
ObjectOutputStream out=new ObjectOutputStream(client.getOutputStream());
out.writeObject(messageobject);
out.flush();
System.out.println(1);
messageobject.inquire=
messageobject.SetLoginUserInfo("122131","21312","dfsd");
out.writeObject(messageobject);
out.flush();
System.out.println(2);
catch(Exception e)
System.out.println(e);
//以下是server()
public void run()
is=new ObjectInputStream(client.getInputStream());
catch (Exception ex)
System.out.println(ex);
while(true){
MessageClass messageobject = (MessageClass)is.readObject();//获得消息对象
//打印出类信息
System.out.println(messageobject.GetLoginId()+messageobject.GetLoginPassword());
idSocketItem = new IdSocket(messageobject.GetLoginId(),client,messageobject);
s.idSocketList.addElement(idSocketItem);
catch (Exception ex)
System.out.println(ex);
按照道理应该输出:
可是为什么输出的是
------解决方案--------------------1.messageobject在第二次输出的时候重新实例化一下,虽然你的对象里面的值变了,但你两次传输给流的都是同一个变量内存地址,会不会出现缓存问题这不好说的。
2.flush这东西我用的不多不过听人说各个流的用法有点差异性有些流甚至不好用像刚才在网上看到这么句话《.flush(); 方法是将内存中的数据一次性输出~!但你没规定内存中数据达到多少时,调用.flush()方法!所以默认是关闭流时,一次性全输出!即:你读入的数据都放在内存中(当内存放不下时就报异常),关闭流时,再一次性把内存中的数据输出出去!!
象PrintWriter就有这个方法~但必须规定一个整数,就是当数据够了整数个以后.flush()方法就输出~!你就是差一个这个!》
按照他这么说似乎某些流必须有所设置才能做到及时刷新,至于这个方法在各个流中的具体用法那需要你自己去看文档了
3.最重要的,拿了人家系统的东西要还啊!!!这流啊什么的,你要用可以,要关闭啊不然各种内存问题,甚至死机都是迟早的事情!!!------解决方案--------------------MessageClass怎么实现的?
熟习JNI的进
熟悉JNI的进
最近刚学JNI
在JNI的学习中遇到了如下的问题
在调用一个动态链接库的时候 给我抛出了如下的异常
java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1311]:
33 cannot locate 'malloc'...
动态链接库是在ubuntu10下通过gcc生成的
以下是c代码
#include "com_jni_test_NativeJniAdder.h"
#include &malloc.h&
JNIEXPORT jint JNICALL Java_com_jni_test_NativeJniAdder_getRes
(JNIEnv * env, jclass jobj, jint a, jint b)
p = (int *)malloc(sizeof(int));
return *p;
这个c文件是对JNI头文件 com_jni_test_NativeJniAdder.h 的实现
JAVA层调用代码
System.loadLibrary("NativeJniAdder");
catch (Exception e)
Log.i(TAG, e.toString());
测试平台是android 2.35 该so文件被我放置到了 /system/lib 下
so文件可以被找到 但加载时会报错 如下错误
java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1311]:
33 cannot locate 'malloc'...
这个c文件的linux下编译成可运行的文件 是可以执行的 但在android下动态链接库无法调用
请各位帮下忙 谁遇到如上的问题 麻烦指教
------解决方案--------------------Ubuntu上编译的动态库怎么能到Android中运行呢,平台架构也是不一样的。
你得把它放到Android源码工程下编译,或是使用ndk编。------解决方案--------------------下载
《JNI Programmer’s Guide and Specification.pdf》
看一下,就明白了。
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:什么是空指针异常_百度知道
什么是空指针异常
请用一些容易理解的词语解释一下 谢谢java中的
我有更好的答案
List mtform =这样子写,没有给mtform的引用指向堆中的空间。就是说mtform只是个引用值,没有指向真正的空间,你调用它的add方法肯定有问题!要先在堆中分配一块空间,然后让mtform指向它: 可以使用ArrayList类来实现List泛型:
List mtform = new ArrayList(); 或者:
List mtform = new LinkedList();
其他类似问题
按默认排序
有个Student类Student objStudent =然后你就直接使用objStudent来调用Student类中的方法了反之你的对象没有实例化就用了;那么就没问题了, 如果在两句之间加上objStudent = new Student()!也就是说是null值举个例子吧
就是对象没有分配内存空间,就访问的错误..0x0000000这种错误要少犯,面试的时候也不要说你经常见,要不你直接走人..
指的是没有实例化直接引用对象.
你的引用为NULL,你去调用那个对象的方法时就会抱空指针异常
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁相关文章推荐:
jsp页面报空数据异常
请教各位:我在jbuilder2005中开发struts,当编译时,一个jsp页面总是报错:点击那个错误代码直接跳到该jsp页面的第一行
错误代码如下:
"index.jsp": java.lang.NullPointerException
"index.jsp": error:org.apache.jasper.JasperException: Error compiling \index.jsp
可能有哪些原因造成这样的错误,我自己没有头绪,望大家指点
我,我是菜鸟!
在线挺!先谢过
回复 (1) 浏览 (1526)
其他文章推荐
ITPUB官方微博:
本帖最后由HelloWorld_001于9:20编辑硬性要求:1.全日制本科毕业四年或硕士毕业两年,重点院校可减少一年。2.主要会shell,java,xml,sql。稍微知道点就行了,面试的说会就行了,面试之前看看就差不多了。sql是要在oracle,sybase,mysql,sqlserver等数据库下写s ......
回复 (142) 浏览 (872)
本帖最后由zwh2013aloha于6:44编辑oracle11g当sql语句中不加orderby的时候,好像是按rowid的顺序返回结果的。我也看过一些相关的文档,oracle的官方意思就是不加orderby,就不保证输出的顺序。那么,问题来了:如果现在我selectXXX,一组结果出来,顺序是... ......
回复 (9) 浏览 (203)
开发过程中遇到如下问题:需要对一棵树从下向上汇总,请大家帮忙。droptabletest_tree_createtabletest_tree_sum(idvarchar2(10)notnull,parent_idvarchar2(10),est_wtnumber(10),valnumber(10));altertabletest_tree_sumaddconstraintpk_test_tree_sum_idprimarykey ......
回复 (14) 浏览 (3485)
最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。以往旧题索引:http://www.itpub.net/forum.php?mod=forumdisplay&fid=3&filter=typeid&typeid=1808http://www.itpub ......
回复 (2) 浏览 (196)
本帖最后由土豆X于8:18编辑redhat、11.2、16G物理内存,memory_target=10G,sga_target=8G,pga_aggregate_target=1G,sga+pga=9G,还剩1G会怎么用?...
回复 (11) 浏览 (262)
文章推荐:
盛拓传媒:
友情链接:
特别鸣谢:
北京皓辰网域网络信息技术有限公司. 版权所有
北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证:编号(京)字第1149号
ITPUB推荐文章解答你所有技术难题2282人阅读
&1:NullPointerException由RuntimeException派生出来,是一个运行级别的异常。意思是说可能会在运行的时候才会被抛出,而且需要看这样的运行级别异常是否会导致你的业务逻辑中断。
& 2:空指针异常发生在对象为空,但是引用这个对象的方法。例如: String s = //对象s为空(null) int length = s.length();//发生空指针异常 &
&3:一个变量是null,及只有其名,没有实值内容,也没分配内存,当你要去取他的长度,对他进行操作就会出现NullPointException,所以生命一个变量时最好给它分配好内存空间,给予赋值。 &
& 4:比如变量为空,而你没有去判断,就直接使用,就会出现NullPointException。写程序时严谨些,尽量避免了,例如在拿该变量与一个值比较时,要么先做好该异常的处理如: if (str == null) { & System.out.println(&字符为空!&); } 当然也可以将这个值写在前面进行比较的,例如,判断一个String的实例s是否等于“a”,不要写成s.equals(&a&),这样写容易抛出NullPointerException,而写成&a&.equals(s)就可以避免这个问题。不过对变量先进行判空后再进行操作比较好
&5:尽量避免返回null,方法的返回值不要定义成为一般的类型,而是用数组。这样如果想要返回null的时候,就返回一个没有元素的数组。就能避免许多不必要的NullPointerException,使用NullObject返回代替返回null确是一种不错的选择。 &
& 6:NullPointerException这个东西换一个角度来看,没准是好处也不一定。可以说,NullPointerException本身也是JAVA安全机制的一部分。有UNIX写C和C++的经验的可能都知道,空指针会导致什么问题:经常会导致程序的崩溃。 :) 而JAVA在这点进行了改善,JAVA为了保证程序的强壮,总是会对对象的引用进行检查。所以不再出险C/C++中的空指针错误,而仅仅是一个运行级别的异常-“NullPointerException”。从这点上说,算是JAVA的一个好处吧。
& Josha Bloch倒是在《Effective Java》中说过返回数组的函数,如果没有返回值,优先返回零长度数组而不是返回null。 :) 不过使用NullObject返回代替返回null确是一种不错的选择。返回数组的方法同样可以返回null,因为数组在JAVA中已经发展为完备的对象了。如果是这样,INVOKER也是不可避免地检查NullPointerException。 & 初值不是你想决定是什么就是什么的。在很多情况下,你甚至无法断定对象的初值是什么才合适。所以这样的习惯并不见得就是很好的习惯。比如说你认为:
String str = &&; 这样比较合理,但是为什么不是String str = &A&; 呢?在某些场合并不见得&&就是合理的初值。关键还是在建立publish方法的契约之上。如果你使用第三方的方法,你需要阅读其JAVADOC,知道其是否会返回null对象?是否会抛出checkedException,是否会抛出运行级别异常。如果是你自己publish方法,那么你需要在你的JAVADOC中说明你的方法的契约:满足什么条件才能调用此方法,调用之后会产生什么返回?是否会返回/何时返回null?是否抛出异常。在实现publish方法的时候,对于入口参数的检查也是非常关键的,因为调用者的行为是你无法期望的。
& 其实异常的处理是一个很有意思的话题,不仅仅只是NullPointerException。比如在DBC中有这么一个例子:你需要打开一个文件读,可能是C:\Data.txt,文件却没有找到,叫不叫异常?你如果需要打开另外一个文件,比如是C:\boot.ini,文件也没有找到,叫不叫异常?第一种情况不叫“异常”,因为C:\Data.txt没有找到应该是你能预计到的情况,那个文件可能存在,也可能不存在,这是需要你自己处理的。而第二种情况确叫做异常,因为正常情况下,C:\boot.ini应该被期望存在的,如果运行时丢失了这个文件,就是运行级别异常。在JDK中也有相应的例子,比如FileInputStream,
BufferReader, StringTokenizer处理到达尾部的情况就是不一样的。 & & &&4.为什么说ResultSet作为处理结果不恰当呢?&& 把不相关的东西耦合在了一起。把JDBC query的结果集逻辑和自己需要的数据聚集的逻辑耦合在了一起。这样连抽象都无法做。现在俺们是从数据库中随机取结果,所以你使用了ResultSet,假设需求变化了,需要从文本文件源中取结果了,你的ResultSet接口成了什么?所以说更好的做法是抽象出数据获取的接口,而针对接口不同实现即可。 :) “单一职责”这点很关键,不需要耦合在一起的东西就不要耦合在一起。
&& 7:我在写程序时,String uri=getSavePath()+getUploadFileName(); System.out.println(uri+&123345&);//这里可以输出结果的 String linkname=getUploadFileName(); String update=&update UserTable set uri='?',linkname='?',linkid='?'where username=&+&'&+username+&'&;&&&&&&&
DataBaseOperate dbo=new DataBaseOperate();&&&& PreparedStatement ps=dbo.getConnection1().prepareStatement(update); ps.setString(1, uri);&&&&&& //这一行居然报出空指针异常呢? ps.setString(2, linkname);&&&&&&&&&&&& ps.setInt(3, i++);&&& ps.executeUpdate(); 原来是加?号是为了可以自动给变量给值‘?’
变成了字符常量了 & ...
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:33508次
排名:千里之外
原创:21篇
(3)(16)(1)(1)

我要回帖

更多关于 空指针异常 的文章

 

随机推荐