CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 扩展类

《java编程艺术》上的chapter5上的例子编译不了!求助ing!!!

楼主zidanjxnu(有人活着!)2005-04-03 20:49:07 在 Java / J2SE / 扩展类 提问

我把书上的代码抄上去了(是不是好傻,不要笑我!)编译的时间老是出现Message类和Session类解析不了!(cannot   resolve   symbol)。我知道这两个方法是mail.jar中的方法。我按照书上所介绍的方法:javac   -classpath     .;E:\Sun\AppServer\lib\mail.jar;E:\Sun\AppServer\lib\activation.jar   EmailClient.java   MessagesTableModel.java   ConnectDialog.java   DownloadingDialog.java   MessageDialog.java  
  我能够在e:\Sun\AppServer\lib下找到这两个文件  
   
  请问:出现这种错误是不是没有加载mail.jar和activation.jar的原因?还是另外的缘故?应该怎么样才能编译呢?  
  就算是很弱智,肯请各位帮忙!!!!在线等待中!!!!!!!!!!! 问题点数:100、回复次数:8Top

1 楼kingfish(工作很忙,很少来csdn...)回复于 2005-04-03 21:03:11 得分 100

import了没?  
   
  你最好把代码贴出来Top

2 楼zidanjxnu(有人活着!)回复于 2005-04-03 21:06:30 得分 0

import   有啊,代码太多了吧,Top

3 楼zidanjxnu(有人活着!)回复于 2005-04-03 21:10:12 得分 0

import   java.awt.*;  
  import   java.awt.event.*;  
  import   java.net.*;  
  import   java.util.*;  
  import   java.mail.*;  
  import   java.mail.internet.*;  
  import   javax.swing.*;  
  import   javax.swing.event.*;  
   
  //The   E-mail   Client.  
  public   class   EmailClient   extends   JFrame{  
  //Message   table's   data   model.  
  private   MessagesTableModel   tableModel;  
   
  //Table   listing   messages.  
  private   JTable   table;  
   
  //This   is   the   text   area   for   displaying   messages.  
  private   JTextArea   messageTextArea;  
   
  //This   is   the   split     panel   that   holds   the   messages   table   and   the   message   view   panel.  
  private   JSplitPane   splitPane;  
   
  //These   are   the   buttons   for   managing   the   selected   message.  
  private   JButton   replyButton,forwardButton,deleteButton;  
   
  //Currently   selected   message   in   table.  
  private   Message   selectedMessage;  
   
  //Flag   for   whether   or   not   a   message   is   being   deleted.  
  private   boolean   deleting;  
   
  //This   is   the   JavaMail   session.  
  private   Session   session;  
   
  //Constructor   for   E-mail   Client.  
  public   EmailClient(){  
  //Set   application   title.  
  setTitle("E-mail   Client");  
   
  //Set   window   size.  
  setSize(640,480);  
   
  //Handle   window   closing   events.  
  addWindowListener(new   WindowAdapter(){  
  public   void   WindowClosing(WindowEvent   e){  
  actionExit();  
  }  
  });  
   
  //Set   up   file   menu.  
  JMenuBar   menuBar   =new   JMenuBar();  
  JMenu   fileMenu=new   JMenu("File");  
  fileMenu.setMnemonic(KeyEvent.VK_F);  
  JMenuItem   fileExitMenuItem=new   JMenuItem("Exit",KeyEvent.VK_X);  
  fileExitMenuItem.addActionListener(new   ActionListener(){  
  public   void   actionPerformed(ActionEvent   e){  
  actionExit();  
  }  
  });  
  fileMenu.add(fileExitMenuItem);  
  menuBar.add(fileMenu);  
  setJMenuBar(menuBar);  
   
  //Set   up   buttons   panel.  
  JPanel   buttonPanel=new   JPanel();  
  JButton   newButton=new   JButton("New   Message");  
  newButton.addActionListener(new   ActionListener(){  
  public   void   actionPerformed(ActionEvent   e){  
  actionNew();  
  }  
  });  
  buttonPanel.add(newButton);  
   
  //Set   up   messages   table.  
  tableModel=new   MessagesTableModel();  
  table=new   JTable(tableModel);  
  table.getSelectionModel().addListSelectionListener(new     ListSelectionListener(){  
  public   void   valueChanged(ListSelectionEvent   e){  
  tableSelectionChanged();  
  }  
  });  
  //Allow   only   one   row   at   a   time   to   be   selected.  
  table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);Top

4 楼zidanjxnu(有人活着!)回复于 2005-04-03 21:10:36 得分 0

//Set   up   E-mails   panel.  
  JPanel   emailsPanel=new   JPanel();  
  emailsPanel.setBorder(BorderFactory.createTitledBorder("E-mails"));  
  messageTextArea=new   JTextArea();  
  messageTextArea.setEdidtable(false);  
  splitPane=new   JSplitPane(JSplitPane.VERTICAL_SPLIT,new   JScrollPane(table),new   JScrollPane(messageTextArea));  
  emailsPanel.setLayout(new   BorderLayout());  
  emailsPanel.add(splitPane,BorderLayout.CENTER);  
   
  //Set   up   buttons   panel   2.  
  JPanel   buttonPanel2=new   JPanel();  
  replyButton=new   JButton("Reply");  
  replyButton.addActionListener(new   ActionListener(){  
  public   void   actionPerformed(ActionEvent   e){  
  actionReply();  
  }  
  });  
  replyButton.setEnabled(false);  
  buttonPanel2.add(replyButton);  
  forwardButton=new   JButton("Forward");  
  forwardButton.addActionListener(new   ActionListener(){  
  public   void   actionPerformed(ActionEvent   e){  
  actionForward();  
  }  
  });  
  forwardButton.setEnabled(false);  
  buttonPanel2.add(forwardButton);  
  deleteButton=new   JButton("Delete");  
  deleteButton.addActionListener(new   ActionListener(){  
  public   void   actionPerformed(ActionEvent   e){  
  actionDelete();  
  }  
  });  
  deleteButton.setEnabled(false);  
  buttonPanel2.add(deleteButton);  
   
  //Add   panels   to   display.  
  getContentPane().setLayout(new   BorderLayout());  
  getContentPane().add(buttonPanel,BorderLayout.NORTH);  
  getContentPane().add(emailsPanel,BorderLayout.CENTER);  
  getContentPane().add(buttonPanel2,BorderLayout.SOUTH);  
  }  
   
  //exit   this   program.  
  private   void   actionExit(){  
  System.exit(0);  
  }  
   
  //Create   a   new   message.  
  private   void   actionNew(){  
  sendMessage(MessageDialog.NEW,null);  
  }  
   
  //Called   when   table   row   selection   changes.  
  private   void   tableSelectionChanged(){  
  //if   not   in   the   middle   of   deleting   a   message,set   the   selected   message   and   display   it.  
  if(!deleting){  
  selectedMessage=tableModel.getMessage(table.getSelectedRow());  
  showSelectedMessage();  
  updateButtons();  
  }  
  }  
   
  //Reply   to   a   message.  
  private   void   actionReply(){  
  sendMessage(MessageDialog.REPLY,selectedMessage);  
  }  
   
  //Forward   a   message.  
  private   void   actionForward(){  
  sendMessage(MessageDialog.FORWARD,selectedMessage);  
  }  
   
  //Delete   the   selected   message.  
  private   void   actionDelete(){  
  deleting=true;  
   
  try{  
  //Delete   message   form   server.  
  selectedMessage.setFlag(Flags.Flag.DELETED,true);  
  Folder   folder=selectedMessage.getFolder();  
  folder.close(true);  
  folder.open(Forder.READ_WRITE);  
  }   catch(Exception   e){  
  showError("Unable   to   delete   message."   ,false);  
  }  
   
  //Delete   message   form   table.  
  tableModel.deleteMessage(table.getSelectedRow());  
   
  //Update   GUI.  
  messageTextArea.setText("");  
  deleting=false;  
  selectMessage=null;  
  updateButtons();  
  }  
   
  //Send   the   specified   message.  
  private   void   sendMessage(int   type,Message   message){  
  //Display   message   dialog   box   to   get   message   values.  
  MessageDialog   dialog;  
  try{  
  if(!dialog.display()){  
  //Return   if   dialog   box   was   cancelled.  
  return;  
  }  
  }catch(Exception   e){  
  showError("Unable   to   send   message.",false);  
  return;  
  }  
   
  try{  
  //Create   a   new   message   with   values   form   dialog   box.  
  Message   newMessage=new   MimeMessage(session);  
  newMessage.setFrom(new   InternetAddress(dialog.getFrom()));  
  newMessage.setRecipient(Messge.RecipientType.TO,new   InternetAddress(dialog.getTo()));  
  newMessage.setSubject(dialog.getSubject());  
  newMessage.setSendDate(new   Date());  
  newMessage.setText(dialog.getContent());  
   
  //Send   new   message.  
  Transport.send(newMessage);  
  }   catch(Exception   e){  
  showError("Unable   to   send   message.",false);  
  }  
  }Top

5 楼kingfish(工作很忙,很少来csdn...)回复于 2005-04-03 21:18:03 得分 0

应该是:  
  import   javax.mail.*;  
  import   javax.mail.internet.*;  
                ===Top

6 楼zidanjxnu(有人活着!)回复于 2005-04-03 21:20:56 得分 0

==  
  这样啊,我看现在可不可以了,Top

7 楼zidanjxnu(有人活着!)回复于 2005-04-03 21:26:36 得分 0

谢谢,是这样的,我粗心!!!!!  
  还有再问你一个问题:书上说可以更新classpath环境变量设置。就是不用javac   -classpath====这么长了!??Top

8 楼kingfish(工作很忙,很少来csdn...)回复于 2005-04-03 21:35:19 得分 0

把那几个jar加入环境变量中的CLASSPATH中Top

相关问题

  • Windows编程编译问题
  • windows核心编程编译出错。
  • 哈夫曼编/译码器(编程题)
  • 用什么编译器编译<<windows网络编程>>中的源程序?
  • 用什么编译器编译<<windows网络编程>>中的源程序?
  • 有搞过编译的高手吗?我只是想编译汇编程序。
  • 怎样在linux下编译汇编程序?
  • VC能否作为汇编程序的编译器?
  • tc中嵌套汇编程序,如何编译?
  • 学windows编程用什么编译器好?(除了VC之外)

关键词

  • classpath
  • sun
  • appserver
  • mail
  • jar
  • 书
  • message
  • 方法
  • import
  • private

得分解答快速导航

  • 帖主:zidanjxnu
  • kingfish

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo