我用 MessageBean.java 引用MessageVO.java的对象,编译MessageBean.java时,却在调用MessageVO对象的地方均出现了错误,请问是不是调用javabean时该注意一些问题啊?程序如下:
MessageVO.java:
package mypackage;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.lang.*;
import java.text.*;
public class MessageVO implements java.io.Serializable
{
private String name,email,title,content;
private java.sql.Date date;
public void setName(String name)
{this.name=name;
}
public String getName()
{return this.name;
}
...
}
MessageBean.java:
package mypackage;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.lang.*;
import java.text.*;
import mypackage.MessageVO;
public class MessageBean  
{
private Connection con;
MessageVO msg;
 public MessageBean()
 { 
   String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";
   String SERVANDDB="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev";
   String USER="sa";
   String PWD="bn";
 try{
     Class.forName(CLASSFORNAME);
     con=DriverManager.getConnection(SERVANDDB,USER,PWD);
    }
  catch(Exception e)
    { e.printStackTrace();
    }
  }
  public void setMessage(MessageVO msg)
 {
  this.msg=msg;
  }
...
}
MessageBean 中所有出现MessageVO的地方均无法识别,请高手指教!谢谢!

解决方案 »

  1.   

    你的setMessage方法最好写在MessageBean的构造器中,在实例化MessageBean的时候把MessageVo的对象传给它。在MessageBean中没有哪个地方用到MessageVo的对象啊,你代码没贴全吧!单看setMessage方法没有错的!
      

  2.   

    有一种情况会发生这样的错误MessageVO 没保存 - - !
      

  3.   

    好像是没遵守javabean的规范:
    1.public的构造函数
    2.对应的setter  getter函数
      

  4.   

    MessageVO.java:
    package mypackage;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import java.lang.*;
    import java.text.*;
    public class MessageVO implements java.io.Serializable
    {
    private String name,email,title,content;
    private java.sql.Date date;
    public void setName(String name)
    {this.name=name;
    }
    public void setEmail(String email)
    {this.email=email;
    }
    public void setTitle(String title)
    {this.title=title;
    }
    public void setContent(String content)
    {this.content=content;
    }
    public String getName()
    {return this.name;
    }
    public String getContent()
    {return this.content;
    }
    public String getTitle()
    {return this.title;
    }
    public String getEmail()
    {return this.email;
    }
    public void setDate(java.sql.Date date)
    {this.date=date;
    }
    public java.sql.Date getDate()
    {return this.date;
    }
    }
    MessageBean.java:
    package mypackage;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import java.lang.*;
    import java.text.*;
    import mypackage.MessageVO;
    public class MessageBean  
    {
    private Connection con;
    MessageVO msg;
     public MessageBean()
     { 
       String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";
       String SERVANDDB="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev";
       String USER="sa";
       String PWD="bn";
     try{
         Class.forName(CLASSFORNAME);
         con=DriverManager.getConnection(SERVANDDB,USER,PWD);
        }
      catch(Exception e)
        { e.printStackTrace();
        }
      }
      public void setMessage(MessageVO msg)
     {
      this.msg=msg;
      }
      public void addMessage() throws Exception
      {
       try
         {PreparedStatement stm=con.prepareStatement("insert into message values(?,?,?,?,?)");
      stm.setString(1,msg.getTitle());
      stm.setString(2,msg.getName());
      stm.setDate(3,new java.sql.Date(new java.util.Date().getDate()));
      if((msg.getEmail()).length()==0)
      stm.setString(5,null);
      else stm.setString(5,msg.getEmail());
      stm.setString(4,msg.getContent());
      try
      {
       stm.executeQuery();
       }
      catch(Exception e)
      {
      }
       con.close();
        }
       catch(Exception e)
       {
        e.printStackTrace();
    throw e;
       }
      }
      public Collection getMessage() throws Exception
      {
        Collection ret=new ArrayList();
    try
    {
      Statement stm=con.createStatement();
      ResultSet result=stm.executeQuery("select count(*) from message");
      int message_count=0;
      if(result.next())
      {
        message_count=result.getInt(1);
    result.close();
       }
      if(message_count>0)
      {
        result=stm.executeQuery("select * from message order by date desc");
    while(result.next())
    {
      String title=result.getString("title");
      String name=result.getString("name");
      String email=result.getString("email");
      String content=result.getString("content");
      java.sql.Date date=result.getDate("date");
      MessageVO message=new MessageVO();
      message.setName(name);
      message.setTitle(title);
      message.setContent(content);
      message.setDate(date);
      message.setEmail(email);
      ret.add(message);
     }
       result.close();
       stm.close();
       }
       con.close();
    }
    catch(Exception e)
    {
      e.printStackTrace();
      throw e;
     }
    return ret;
      }
     }
      
    MessageVO.java 我保存了啊,而且还是先编译MessageVO.java成功后,我再编译MessageBean.java的,但只要出现MessageVO字样的地方均有错误。
    错误提示均为:
       cannot resolve symbol
       symbol:class MessageVO最后有个note:MessageBean.java uses or overrides a deprecated API.
                 Recompile with -deprecation for details.   
       

      

  5.   

    MessageBean.java:
    package mypackage;
    import java.io.*;
    import java.sql.*;
    import java.util.*;
    import java.lang.*;
    import java.text.*;
    import mypackage.MessageVO;去掉最后一个看看还有你的NOTE是说你使用了一个被废弃的方法你用的什么IDE?
      

  6.   

    可能classpath是一方面原因,我原先的classpath是d:\Tomcat 4.1.31\webapps\examples\WEB-INF\classes\mypackage,我刚才将最后的mypackage去掉了,cannot resolve symbol错误没有了,可note:MessageBean.java uses or overrides a deprecated API.
                 Recompile with -deprecation for details.
    错误还在,是什么原因呢?
    楼上所说的IDE是指什么啊?不好意思哦,我是新手
    我用DREAMWEAVER编写的javabean,在运行中输入cmd编译的。
      

  7.   

    classpath改好了的话
    就是IDE的问题了
      

  8.   

    什么是IDE呢?
    不好意思哦,我是新手
      

  9.   

    我也有类似的问题,一个包中一个javabean 使用另一个javabean,被调用的bean可以编译,调用的这个死活编译不过去,说 找不到符号,就是说被调用的class他不认。 网上找了3,4个例子,都是一样的问题,怀疑不是程序的问题,是不是操作过程有误? 我在jsp引用单个javabean没问题,请问如果javabean中使用同目录下的其他bean要注意些什么呢?多谢
      

  10.   

    和我的问题差不多嘛
    可能也是classpath问题,
    你重新设置以下