1. 使用Jar包
例如,现在有Jar包(calculator.jar),在Test.java中需要使用该Jar包。编译和运行指令如下。
$ javac -cp calculator.jar Test.java
$ java -cp $CLASSPATH:calculator.jar Test
说明:$CLASSPATH是linux中JDK的环境变量
2. 制作通用的Jar包
例如,现在要制作Calculator的Jar包(calculator.jar)。Calculator包含的源文件路径如下:
./calculator/Calculator.java
./calculator/util/Utils.java
Utils.java的内容如下:
package calculator.util;
public class Utils {
public static void logd(String exp) {
System.out.println("Utils: "+exp);
}
}
Calculator.java的内容如下:
package calculator;
import calculator.util.Utils;
public class Calculator {
public static String execute(String exp) {
Utils.logd("execute: "+exp);
return null;
}
public static void main(String[] args) {
execute("2+3");
}
}
2.1 生成.class文件
先切换到calculator目录的上一级目录,然后通过java指令生成.class文件。具体的指令如下:
$ cd ../calculator/../
$ javac calculator/Calculator.java
执行完上面的指令后,会生成Calculator.class和Utils.class。
2.2 打包成Jar包
$ find calculator/ -name "*.class" |xargs jar cvf calculator.jar
说明:上面指令的含义是找出calculator目录和其子目录中,所有的.class文件;并将.class文件打包到calculator.jar中。
假如所有的.class文件都在当前目录,可以通过以下指令打包
$ jar cvf calculator.jar *.class
3. 制作可执行的Jar包
可执行的Jar包就是可以直接运行的。例如,存在一个可运行的test.jar,它的执行指令如下:
$ java -jar test.jar
下面通过一则示例,演示如何制作客运行的jar包。
第1步 编辑java源文件
编辑ScreenTest.java,代码如下:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.UIManager;
public class ScreenTest {
private static final int[] Colors = {
0xffffff, // 白
0xff0000, // 红
0x00ff00, // 绿
0x000000, // 黑
0x0000ff, // 蓝
};
private int mIndex = 0;
private JButton mExitButton;
private JTextField mTextView;
private JFrame mJFrame;
public ScreenTest() {
mJFrame = new JFrame();
final KeyListener mKeyListener = new MyKeyListener();
// 添加按钮
mTextView = new JTextField(20);
mTextView.addKeyListener(mKeyListener);
// mJFrame.add(mTextView);
// 添加按钮
mExitButton = new JButton("Exit");
mExitButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
System.exit(1);
}
});
// mJFrame.add(mExitButton);
// 初始化背景色
mIndex = 0;
setColor(mIndex);
// 添加按键监听器
mJFrame.addKeyListener(mKeyListener);
mJFrame.setLayout(new FlowLayout());
mJFrame.setUndecorated(false);
// 全屏
mJFrame.getGraphicsConfiguration().getDevice().setFullScreenWindow(mJFrame);
// 显示
mJFrame.setVisible(true);
}
private void setColor(int index) {
mJFrame.getContentPane().setBackground(new Color(Colors[index%Colors.length]));
}
private final class MyKeyListener implements KeyListener {
@Override
public void keyPressed(KeyEvent e) {
System.out.println("CODE:"+e.getKeyCode());
switch (e.getKeyCode()) {
case KeyEvent.VK_LEFT:
case KeyEvent.VK_UP:
if (mIndex > 0) {
mIndex--;
setColor(mIndex);
} else {
System.exit(1);
}
break;
case KeyEvent.VK_RIGHT:
case KeyEvent.VK_DOWN:
case KeyEvent.VK_ENTER:
case KeyEvent.VK_SPACE:
if (mIndex < Colors.length-1) {
mIndex++;
setColor(mIndex);
} else {
System.exit(1);
}
break;
case KeyEvent.VK_ESCAPE:
System.exit(1);
break;
}
}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {}
}
public static void main(String[] args) {
new ScreenTest();
}
}
第2步 编辑配置文件manifest.mf
新建并编辑manifest.mf,它的内容如下:
Manifest-Version: 1.0
Created-By: 1.6.0_45 (Sun Microsystems Inc.)
Main-Class: ScreenTest
说明:每一个jar包中都存在manifest.mf文件。而对于可执行的jar包而言,需要手动添加Main-Class项,指定main()函数所在的类,这里的Main-Class必须是main所在的类的package路径!
第3步 生成.class文件
编辑java文件,生成对应的.class文件。
$ java ScreenTest.java
第4步 打包test.jar
将.class和manifest.mf打包成test.jar包,指令如下:
$ jar cvfm test.jar manifest.mf *.class
第5步 运行test.jar
$ java -jar test.jar
将swing打包成exe程序,可以参考将java swing写的用程序打包exe可执行程序