java编译并打包成可执行jar和exe文件

java编译并打包成可执行jar和exe文件


先建立java文件如下所示:
RadioButtonFrame.java
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * Created by IBM on 2017/9/21.
 */
public class RadioButtonFrame extends JFrame{
    private JPanel buttonPanel;
    private ButtonGroup group;
    private JLabel label;
    private static final int DEFAULT_SIZE=36;

    public static void main(String[]args){
        RadioButtonFrame buttonFrame=new RadioButtonFrame();
        buttonFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        buttonFrame.setVisible(true);
    }

    public RadioButtonFrame(){
        label=new JLabel("The quick brown fox jumps over the lazy dog.");
        label.setFont(new Font("Serif", Font.PLAIN,DEFAULT_SIZE));
        add(label,BorderLayout.CENTER);

        buttonPanel=new JPanel();
        group=new ButtonGroup();

        addRadioButton("Small",8);
        addRadioButton("Medium",12);
        addRadioButton("Large",18);
        addRadioButton("Extra large",36);

        Border etched=BorderFactory.createEtchedBorder();
        Border titled=BorderFactory.createTitledBorder(etched,"border types");

        buttonPanel.setBorder(titled);
        add(buttonPanel,BorderLayout.SOUTH);
        pack();
    }

    public void addRadioButton(String name,final int size){
        boolean selected=size==DEFAULT_SIZE;
        JRadioButton button=new JRadioButton(name,selected);
        group.add(button);
        buttonPanel.add(button);

        ActionListener listener=new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setFont(new Font("Serif",Font.PLAIN,size));
            }
        };
        button.addActionListener(listener);
    }

}

在编译器中编译运行结果如下:
 
使用控制台命令编译RadioButtonFrame.java文件
javac  RadioButtonFrame.java
获得编译后的类文件两个:RadioButtonFrame.class和RadioButtonFrame$1.class如下图:
 
打jar包
在命令行中打包成jar
jar -cvf RadioButton.jar RadioButtonFrame.class  

生成RadioButton.jar文件,这个文件是不可执行的,因为里面的MANIFEST.MF文件没有主类。如同:


 

用解压软件解压RadioButton.jar,找到MANIFEST.MF文件用记事本打开,内容如下: 


修改里面的内容添加:Main-Class:RadioButtonFrame为我们上面建立的java类的类名。Created-By: 1.8.0_121 (Oracle Corporation)把冒号后面的修改一下如:Created-By: RadioButton。如图:


 
然后把MANIFEST.MF、RadioButtonFrame.class和RadioButtonFrame$1.class三个文件一起打包成jar使用命令
jar cvfm RadioButton.jar  MANIFEST.MF  RadioButtonFrame.class  RadioButtonFrame$1.class
如图:
 
这个RadioButton.jar文件是可以运行的。使用命令行运行如下:
 


现在完成了jar可执行文件。
下面将jar文件转成exe文件:
使用exe4j工具转换。
 
 
 
上图输入名字和输入位置,点下一步
 
输入exe的名字,再下一步
 
选择我们刚才生成的可执行的RadioButton.jar文件
 
在选择主类,因为我们的java类中只有一个主类,所有只显示出来一个。下一步
 
 
完成。
 
这是生成的exe和运行结果。

猜你喜欢

转载自blog.csdn.net/u014572215/article/details/78201619
今日推荐