用命令行编译java并生成可执行的jar包

用命令行编译java并生成可执行的jar包_第1张图片

如果对于编译有编码要求的 应该使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java

一个package中,两个java文件中,一个有main函数,一个没有,两者之间有调用关系

ThreadTest.java

package common;

import javax.swing.JFrame;

public class ThreadTest {
    public static void main(String[] args)  {
        DD.to();
        JFrame frame;
        frame = new JFrame();
        frame.setSize(500,DD.size());
        frame.setLocation(300,300);
        frame.setVisible(true);
    }
}

DD.java

package common;

/**
 * Created by shao on 2016/11/8.
 */
public class DD {

    public static void to(){
        System.out.println("shaofeifei is a master");
    }
    public static int size(){
        return 1000;
    }
}
刚开始文件情况为:

用命令行编译java并生成可执行的jar包_第2张图片

执行步骤:

用命令行编译java并生成可执行的jar包_第3张图片

结果:

用命令行编译java并生成可执行的jar包_第4张图片

就是这样了。

用命令行编译java并生成可执行的jar包_第5张图片

将my.jar通过2345好压打开看为:

用命令行编译java并生成可执行的jar包_第6张图片

多了一个META-INF文件,打开发现:

用命令行编译java并生成可执行的jar包_第7张图片

打开MANIFEST.MF文件

用命令行编译java并生成可执行的jar包_第8张图片



前面讲的都是一个package包中的,现在引入多个包

项目结构

用命令行编译java并生成可执行的jar包_第9张图片

文件结构

用命令行编译java并生成可执行的jar包_第10张图片

用命令行编译java并生成可执行的jar包_第11张图片



ThreadTest.java

package common;

import javax.swing.JFrame;

import common.ff.DD;
import common.rr.GG;

public class ThreadTest {
    public static void main(String[] args) {
        DD.to();
        JFrame frame;
        frame = new JFrame();
        frame.setSize(GG.widthSize(), DD.heightSize());
        frame.setLocation(300, 300);
        frame.setVisible(true);
    }
}

DD.java

package common.ff;

import common.rr.GG;

/**
 * Created by shao on 2016/11/8.
 */
public class DD {
    public static void to() {
        System.out.println("shaofeifei is a master");
    }

    public static int heightSize() {
        return GG.widthSize()/2;
    }

    public static void main(String args[]) {
        for (int i = 0; i < 5; i++) {
            System.out.println("--------------------");
        }
        System.out.println("master of masters");
        for (int i = 0; i < 5; i++) {
            System.out.println("--------------------");
        }
    }
}

GG.java

package common.rr;

/**
 * Created by shao on 2016/11/8.
 */
public class GG {
    public static int widthSize() {
        return 1000;
    }
}

接下来有两种编译方法,一种是直接编译ThreadTest.java,不写代码单独编译DD.java,GG.java


这就是在src目录中,按顺序从最基础的开始编译这些java文件,运行之后结果为:(多java文件的时候,一定要选择操作路径在所有文件的外面,如果不引入外部的jar包,则不用-classpath ,否则引用javac -classpath jar包路径 sourcesfiles)

用命令行编译java并生成可执行的jar包_第12张图片

用命令行编译java并生成可执行的jar包_第13张图片

用命令行编译java并生成可执行的jar包_第14张图片

这时候大家都编译好了,

一种简单的方法就是把整个common文件夹变成一个jar包,也可以只提取class文件,把java文件删除之后再把common文件夹变成一个jar包


用命令行编译java并生成可执行的jar包_第15张图片

运行jar命令之后:

用命令行编译java并生成可执行的jar包_第16张图片

运行jar包结果:

用命令行编译java并生成可执行的jar包_第17张图片

这时候的my.jar内部结构为:

用命令行编译java并生成可执行的jar包_第18张图片

用命令行编译java并生成可执行的jar包_第19张图片

用命令行编译java并生成可执行的jar包_第20张图片

用命令行编译java并生成可执行的jar包_第21张图片


这样做的话jar包中有很多没用的java文件。所以我们还可以将java文件删除后再打包成jar格式

用命令行编译java并生成可执行的jar包_第22张图片


你可能感兴趣的:(dos命令行)