不加包名,把以下文件放在同一个文件夹中,可以编译成功
//MessageVO文件
//package liuyanben;
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 java.sql.Date getDate()
{
return this.date;
}
public void setDate(java.sql.Date date)
{
this.date=date;
}
}//MessageBean.java文件
//package liuyanben;
//import com.microsoft.jdbc.sqlserver.SQLServerDriver;
import java.sql.*;
import java.util.*;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="bn";
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().getTime()));
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;
}
}
//获得所有留言消息,并且返回结果到jsp页面
public Collection getMessage()throws Exception
{
Collection<MessageVO> ret=new ArrayList<MessageVO>();//如果不加<MessageVO>就会出现“怎么会出现使用了未经检查
//或不安全的操作”这是因为JDK1.5中引进了泛型,但是你的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 time desc");
while(result.next())
{
String title=result.getString("title");
String name=result.getString("name");
String mail=result.getString("mail");
String content=result.getString("content");
java.sql.Date date=result.getDate("time");
MessageVO message=new MessageVO();
message.setName(name);
message.setTitle(title);
message.setContent(content);
message.setDate(date);
message.setEmail(mail);
ret.add(message);
}
result.close();
stm.close();
}
con.close();
}
catch (Exception e)
{
e.printStackTrace();
throw e;
}
return ret;
}
}而把上面java文件中的“//package liuyanben;”去掉注释//后却有一个文件不能编译成功(需要调用另一个bean的那个文件),百思不得其解,希望大家帮忙出下主意

解决方案 »

  1.   

    package 其实就是你的类文件所在的文件夹结构
    不是随便就可以加的
    比如说package liuyanben  那表示你的这些类文件都在liuyanben这个文件夹下
      

  2.   

    这个包是放在classes文件里面的,只要把java文件编译成class文件后再放入classes里面对应的包就可以,现在问题是我把这两个java文件放在同一个文件夹中就为什么就是不能一起编译呢,而且我也试过把它们都放到classes里面的包之中然后再编译一次了,为什么还是不行呢
      

  3.   

    楼上的,用javac -cp我不知道怎么样写啊
    为什么正常编译不行呢,我用的是EditPlus编译的
      

  4.   

    只要不调用另一个Bean中的类,单独一个bean就算带包也可以编译成功的呀,我的问题出在调用方面
    waiting
      

  5.   

    调用的时候你必须确定你的javabean文件是不是标准的javabean,否则会出错,一般javabean包含一个public的公有构造函数,然后对于属性来说,set和get
      

  6.   

    回楼上的,我的javabean源程序去掉包名之后,可以编译通过,至少证明了一点,javabean是没写错的
      

  7.   

    先在第一个文件下建一个liuyanben文件夹,把MessageVO.class文件放进去
    再第二个文件下加个import liuyanben.MessageVO试试
      

  8.   

    在DOS下进入你写的类所在录下   使用命令   javac -d  包名 *.java  试试吧
      

  9.   

    兄弟,还是不行啊,一样是找不到MessageVO这个符号
    再等
      

  10.   

    你的CLASSPATH有问题,粘出来看看都有什么,
      

  11.   

    classpath的内容是.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar不知道有什么问题,麻烦帮忙看下
      

  12.   

    TO 各路高手
      我自己写了一个目录树,定义了一个Node类,一个Tree类,那么编译JavaBean的时候,如何能让Tree类直接可以用Node这个类呢??
      

  13.   

    带包编译 javac -d . *.java
    你试试啊。
      

  14.   

    楼上的兄弟,我不知道你那javac -d . *.java    -d后面的那个点是不是有的,反正我几种都 试了都不行的,不是找不到源文件就是发生错误D:\liuyanben\WEB-INF\classes>javac -d.MessageBean.javajavac -d.D:\liuyanben\WEB-INF\classes\MessageBean.javaD:\liuyanben\WEB-INF\classes>javac -d MessageBean.javajavac -d D:\liuyanben\WEB-INF\classes\MessageBean.java
      

  15.   

    javac -d . MessageBean.java
    这样不行?
    如果不性的话,就把MessageBean.java拿到classes下,然后继续用我给你的命令编译,保证OK
      

  16.   

    兄弟,我本来就是放在classes下测试的,你看上面我发的测试路径啊
      

  17.   

    我来! 
    只说加上包名package liuyanben的情况,并且根据楼主的意思应该是在cmd下编译的!
    方法一:将MessageVO.java放到liuyanben目录下,而MessageBean.java放到classes下
    在cmd中,定位到classes目录,用javac -d . MessageBean.java编译.
    方法二:将MessageVO.java和MessageBean.java全部放到liuyanben下
    在cmd中,定位到classes目录,用javac liuyanben\MessageBean.java编译.
    如果不成功,那就是人品有问题了,^_^
    另外,两个文件全放到classpath下的方法偶还没找到,估计根据jvm的规范也是不行的!
      

  18.   

    哈哈,两种方法都行,看来我的人品没问题啊javac -d . MessageBean.java中的那个黑点两边都有空格,差点没认出来谢谢各位兄弟姐妹(不知道有没有姐妹的^_^),
    分不多,意思意思,别介意