利用原始的javac手写编译脚本编译整个Java项目

如何编译一个无包结构的单个java文件,无依赖jar包,除了JDK;以及运行该文件?

在任何目录(/home/vc/javacDemo/one)下新建NoPackageClass.java文件

public class NoPackageClass {
    public static void main(String[] args) {
        System.out.println("This is no package class!");
        System.out.println("java.io.tmpdir property: "+System.getProperty("java.io.tmpdir"));
    }
}

进入改目录下执行

javac -encoding UTF-8 ./NoPackageClass.java 编译源文件,只指定了源文件源码格式为UTF-8

运行:java NoPackageClass,这里运行class文件并不需要加class文件后缀,只要java 命令后跟具有main函数的class文件名即可。

输出:

This is no package class!
java.io.tmpdir property: /tmp

如何编译一个有包结构的java文件, 无依赖jar包,除了JDK; 以及如何运行该文件

在目录/home/vc/javacDemo/two下创建下面文件,源文件并没有根据package 放置在根据package划分的目录中。

package org.vincent;

public class PackageClass {
    public static void main(String[] args) {
        System.out.println("This is package class!");
    }
}

这个时候因为源文件已经有package 进行管理了,那么需要添加一个参数-d, 用于指定编译后的class 文件存放的基目录,然后javac会根据包结构再生成相应的文件夹 。

当我们在 /home/vc/javacDemo/two java原代码所在目录下执行javac命令编译源代码时候,-d ./表示以源代码所在目录为class文件的根目录。javac -encoding UTF-8 -d ./ PackageClass.java 最后编译的class 文件所在目录为:/home/vc/javacDemo/two/org/vincent class文件根目录 + org/vincent (这个也是包结构)

运行 只能在class 文件根目录下执行,就是我们maven项目熟知的target目录

同时需要执行main方法类所在的全路径名称:java org.vincent.PackageClass
输出:This is package class!

批量编译大量java文件

新增 PackageClassTwo.java 文件

package org.vincent;

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值