打包jar文件步骤

本文详细介绍了如何将Java源码编译成class文件,并通过创建manifest.mf文件指定主类,然后使用jar命令打包成可执行的jar文件。强调了manifest文件格式的重要性,包括正确的空格和换行。

  打包成jar文件

     

     

        

           编译Login.javaLogin.class(当然假设你事先已经设置好了JDK的环境变量PATHCLASSPATH      
 
在命令行执行编译命令:
      
 javac Login.java      
    
用文本编辑器(比如记事本/UltraEdit )编写如下manifest文件,并保存为
manifest.mf       
    
 Manifest-Version: 1.0      
 Main-Class:  Login      
    
 
【注意】文件manifest.mf内必须是3行文本:
      
 
第一行的内容依次是:“Manifest”、英文减号、“Version”、英文冒号、英文空格、数字“1”、英文句号、数字“0
      
 
第二行的英文冒号与Login之间必须要有一个英文空格!!!
      
 
第三行是一个空行,也就是说,你要在Login之后键入一个回车,然后才可以存盘退出!!!
      
 
如果冒号后面没有空格,可以生成jar文件但不能执行;如果Test后没有回车符,则生成jar文件时会报错。
      
    
 
四、将Login.class打包成.jar文件,并使用manifest.mf指明哪一个是带有public  static void main()的“主函数”
      
 
在命令行执行编译命令:
      
 jar cvfm Login.jar manifest.mf *.class  

 

 

 

附录:Login.java(只是用于打包实验,无实际意义)

 

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.sql.*;

 

public class Login extends JFrame implements ActionListener

{

       JLabel name = new JLabel("用户名:");

       JLabel pass = new JLabel("  :");

      

       TextField name_txt = new TextField(100);

       TextField pass_txt = new TextField(100);

      

       JButton ok = new JButton("确定");

       JButton exit = new JButton("取消");

       JButton regedit = new JButton("注册");

 

       public Login()

       {

              pass_txt.setEchoChar('*');

             

              Label temp1 = new Label("   ");

              temp1.setBackground(new Color(198,198,226));

              Label temp2 = new Label("   ");

              temp2.setBackground(new Color(198,198,226));

              Label temp3 = new Label("   ");

              temp3.setBackground(new Color(198,198,226));

              Label temp4 = new Label("   ");

              temp4.setBackground(new Color(198,198,226));

             

              this.addWindowListener(new WindowHandler());

              this.setBackground(new Color(198,198,226));

              this.add(temp1,BorderLayout.EAST);

              this.add(temp2,BorderLayout.SOUTH);

              this.add(temp3,BorderLayout.WEST);

              this.add(temp4,BorderLayout.NORTH);

             

              Panel p1 = new Panel(new GridLayout(2,1,5,5));

              Panel p2 = new Panel(new GridLayout(2,2,0,8));

              Panel p3 = new Panel(new FlowLayout());

 

              p2.add(name);

              p2.add(name_txt);

              p2.add(pass);

              p2.add(pass_txt);

             

              p3.add(ok);

              p3.add(exit);

              p3.add(regedit);

 

              p1.add(p2);

              p1.add(p3);

              p1.setBackground(new Color(198,198,226));

             

              this.add(p1,"Center");

             

              ok.addActionListener(this);

              exit.addActionListener(this);

              regedit.addActionListener(this);

             

              this.setTitle("登录");

              this.setResizable(false);

              this.setLocation(300,200);

              this.setSize(300,180);

              this.setVisible(true);

             

       }    

              public void actionPerformed(ActionEvent e)

              {

                     if(e.getActionCommand() == "取消")

                     {

                            JOptionPane.showMessageDialog(null,"谢谢使用本系统!!!");

                            System.exit(0);

                     }

                    

                     if (e.getActionCommand() == "确定")

                     {

                            String name, pass;

                            name = name_txt.getText().trim();

                            pass = pass_txt.getText().trim();

                           

                            try

                            {

                                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                                   Connection con = DriverManager.getConnection("jdbc:odbc:lxf");

                                   String sql = "select * from student where username=? and password=?";

                                   PreparedStatement ps = con.prepareStatement(sql);

                                   ps.setString(1,name);

                                   ps.setString(2,pass);

                                   ResultSet rs = ps.executeQuery();

                                   if (rs.next())

                                   {

                                          JOptionPane.showMessageDialog(null,"登录成功!!!");

                                          JFrame ff = new JFrame();

                                          JPanel pp = new JPanel(new GridLayout(3,1,0,0));;

                                          JLabel ll = new JLabel("用户名ID是:"+rs.getString("id"));

                                          JLabel ll1 = new JLabel("用户名是:"+rs.getString("username"));

                                          JLabel ll2 = new JLabel("用户名密码是:"+rs.getString("password"));

                                          pp.add(ll);

                                          pp.add(ll1);

                                          pp.add(ll2);

                                          ff.add(pp);

                                          ff.setSize(200, 200);

                                          ff.setVisible(true);

                                          this.dispose();

                                   }

                                   else

                                   {

                                          JOptionPane.showMessageDialog(null,"无此用户或密码不对/n请重新输入!!!");

                                          name_txt.setText("");

                                          pass_txt.setText("");

                                   }

                                  

                            }catch(Exception ee)

                            {

                                   JOptionPane.showMessageDialog(null,"数据库连接失败!!!");      

                                   ee.printStackTrace();

                            }

                     }

                     if(e.getActionCommand() == "注册")

                     {

                            String name,pass;

                            name = name_txt.getText().trim();

                            pass = pass_txt.getText().trim();

                           

                            if(name.equals("") || pass.equals(""))

                            {

                                   JOptionPane.showMessageDialog(null,"必须完整填写所有的信息!!!");

                                   return;

                            }

                           

                            try

                            {

                                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                                   Connection con = DriverManager.getConnection("jdbc:odbc:lxf");

                                   String sql = "select * from student where username=?";

                                   PreparedStatement ps = con.prepareStatement(sql);

                                   ps.setString(1,name);

                                   ResultSet rs = ps.executeQuery();

                                   if(rs.next())

                                   {

                                          JOptionPane.showMessageDialog(null,"该用户已经存在,请重新注册!!!");

                                          name_txt.setText("");

                                          pass_txt.setText("");

                                          return;    

                                   }

                                   else

                                   {

                                          sql = "insert into student(username,password) values(?,?)";

                                          ps = con.prepareStatement(sql);

                                          ps.setString(1,name);

                                          ps.setString(2,pass);

                                          int re = ps.executeUpdate();

      

                                          if (re != -1)

                                          {

                                                 JOptionPane.showMessageDialog(null,"用户注册成功!!!/n请登录本系统");      

                                                 name_txt.setText("");

                                                 pass_txt.setText("");

                                          }

                                          else

                                          {

                                                 JOptionPane.showMessageDialog(null,"注册失败/n请重新输入!!!");

                                                 name_txt.setText("");

                                                 pass_txt.setText("");

                                          }

                                   }

                            }catch(Exception ee)

                            {

                                   JOptionPane.showMessageDialog(null,"数据库连接失败!!!");      

                                   ee.printStackTrace();

                            }

                     }

              }

             

             

              public static void main(String args[])

              {

                     new Login();

              }

             

              class WindowHandler extends WindowAdapter

              {

                    public void windowClosing(WindowEvent e)

                   {

                       JOptionPane.showMessageDialog(null,"谢谢使用本系统!");  

                         System.exit(0);

                   }

              }

             

}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值