首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打包java程序(上)

打包java程序(上)

作者头像
phith0n
发布2020-10-15 22:04:52
9950
发布2020-10-15 22:04:52
举报

    java作为一个跨平台的程序语言,虽说给程序员带来了方便,但是还是苦了用户。因为运行java程序需要装java虚拟机,版本如果不对还容易启动不来。

    这里说一下把自己写的java程序打包成jar我们的方法。下面是一个简单的使用swing库的界面程序,保存为test_2ButtonChange.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

//使用两个按钮分别控制图像颜色、文字的变化,互不干扰,使用内部类完成

class test_2ButtonChange{
	public static void main(String[] args) {
		doAction go = new doAction();
		go.begin();
	}
}

class doAction{
	private JButton color_Button;
	private JButton text_Button;
	private JFrame frame;
	private colorWidget myOval;
	private JLabel myText;
	private colorListener cListener;
	private labelListener lListener;
	private Integer i = 0;
	public void begin()
	{
		cListener = new colorListener();
		lListener = new labelListener();  
		myOval = new colorWidget();
		frame = new JFrame();
		color_Button = new JButton("改变颜色");
		text_Button = new JButton("改变文字");
		myText = new JLabel(i.toString());
		color_Button.addActionListener(cListener);
		text_Button.addActionListener(lListener);
		frame.getContentPane().add(BorderLayout.SOUTH,color_Button);
		frame.getContentPane().add(BorderLayout.CENTER,myOval);
		frame.getContentPane().add(BorderLayout.NORTH,text_Button);
		frame.getContentPane().add(BorderLayout.EAST,myText);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(500,300);
		frame.setVisible(true);
	}
	
	class colorListener implements ActionListener{
		public void actionPerformed(ActionEvent event) {
			frame.repaint();
		}
	}
	
	class labelListener implements ActionListener{
		public void actionPerformed(ActionEvent event) {
			i++;
			myText.setText(i.toString());
		}
	}
	
	
}

class colorWidget extends JPanel{

	/**
	 * 
	 */
	private static final long serialVersionUID = -460185823252881743L;
	public void paintComponent(Graphics g) {
		int red = (int)(Math.random() * 255);
		int green = (int)(Math.random() * 255);
		int blue = (int)(Math.random() * 255);
		Color randomColor = new Color(red,green,blue);
		g.setColor(randomColor);
		g.fillOval(10, 10, 400, 100);
	}
	
}
  • 命令行

        使用命令行的方法,可以在没有IDE的时候打包JAR。(Linux下更常用)

        1.编译:javac test_2ButtonChange.java

            编译命令我相信没有什么疑惑。

点击查看原图
点击查看原图

        2.创建mf.txt来描述哪个类带有main方法。

            这一步很重要,否则打包好的jar也不能运行。新建一个文本文件,叫什么都可以,里面填写这个java程序的信息,比如:

Manifest-Version: 1.0
Class-Path: 
Created-By: 1.6.0_06 (Sun Microsystems Inc.)
Main-Class: test_2ButtonChange

            注意最后一行换行。Main-Class:test_2ButtonChange即是包含了main方法的类。

        3.开始打包.jar文件:jar -cvmf mainfest.txt app.jar *.class

            mainfest.txt表示第二步新建的文件,app.jar表示我们待生成的jar文件的名字,*.class表示第一步编译好的那些class文件。我这里演示的时候这些文件都放在一起,所以没有加路径。如果编写程序的话最好把.java源文件和生成的.class文件分开放在不同文件夹里,这时候写命令行就要加相对或绝对路径。

点击查看原图
点击查看原图

        4.验证.jar文件是否能打开:直接双击app.jar,或使用命令行java -jar app.jar

点击查看原图
点击查看原图

(直接双击)

点击查看原图
点击查看原图

(使用命令行)

  • 使用IDE(eclipse)

        IDE就很方便了。打开eclipse,点击文件-导出

点击查看原图
点击查看原图

        选择java-jar文件,下一步:

点击查看原图
点击查看原图

        选择你的工程,比如test_2ButtonChange,下面选择输出的jar文件。点下一步。

点击查看原图
点击查看原图

        一直点下一步,知道出现选择入口点的类,如下。选择你含有main方法的类,最后完成即可:

点击查看原图
点击查看原图

        生成了一个jar文件,效果和命令行的类似。

    现在,只要有java虚拟机(JRE),在任何平台都可以运行这个jar,这就是java语言的优势之处。下次我会讲一下怎样把这个jar再打包成exe文件,毕竟在windows系统下可执行文件最好还是exe,这样更加方便用户使用。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档