参考连接第1期:抛开IDE,了解一下javac如何编译
将所有jar包含在Java类路径中的目录中

工程结构概览

当前工程结构如下:

PS D:\叶建成\JAVA\primary\test_jsoup - 副本> tree /f
卷 DATA 的文件夹 PATH 列表
卷序列号为 F0A7-7514
D:.
│  .project
│
├─bin
├─lib
│      jsoup-1.11.3.jar
│
└─src
    ├─demo
    │      Demo.java
    │      fuck_xyr.java
    │
    └─test

当前位置:

PS D:\叶建成\JAVA\primary\test_jsoup - 副本> dir


    目录: D:\叶建成\JAVA\primary\test_jsoup - 副本


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2020/7/15     15:03                bin
d-----        2020/7/15     14:33                lib
d-----        2020/7/15     14:33                src
-a----        2020/7/15     14:37            214 .project

原本是一个ecplise工程目录,删掉了乱七八糟的。

简单测试fuck_xyr

编译

编译命令

javac

PS D:\叶建成\JAVA\primary\test_jsoup - 副本> javac
用法: javac <options> <source files>
其中, 可能的选项包括:
  @<filename>                  从文件读取选项和文件名
  -Akey[=value]                传递给注释处理程序的选项
  --add-modules <模块>(,<模块>)*
        除了初始模块之外要解析的根模块; 如果 <module>
                为 ALL-MODULE-PATH, 则为模块路径中的所有模块。
  --boot-class-path <path>, -bootclasspath <path>
        覆盖引导类文件的位置
  --class-path <path>, -classpath <path>, -cp <path>
        指定查找用户类文件和注释处理程序的位置
  -d <directory>               指定放置生成的类文件的位置
  -deprecation                 输出使用已过时的 API 的源位置
  --enable-preview             启用预览语言功能。要与 -source 或 --release 一起使用。
  -encoding <encoding>         指定源文件使用的字符编码
  -endorseddirs <dirs>         覆盖签名的标准路径的位置
  -extdirs <dirs>              覆盖所安装扩展的位置
  -g                           生成所有调试信息
  -g:{lines,vars,source}       只生成某些调试信息
  -g:none                      不生成任何调试信息
  -h <directory>               指定放置生成的本机标头文件的位置
  --help, -help, -?            输出此帮助消息
  --help-extra, -X             输出额外选项的帮助
  -implicit:{none,class}       指定是否为隐式引用文件生成类文件
  -J<flag>                     直接将 <标记> 传递给运行时系统
  --limit-modules <模块>(,<模块>)*
        限制可观察模块的领域
  --module <模块>(,<模块>)*, -m <模块>(,<模块>)*
        只编译指定的模块,请检查时间戳
  --module-path <path>, -p <path>
        指定查找应用程序模块的位置
  --module-source-path <module-source-path>
        指定查找多个模块的输入源文件的位置
  --module-version <版本>        指定正在编译的模块版本
  -nowarn                      不生成任何警告
  -parameters                  生成元数据以用于方法参数的反射
  -proc:{none,only}            控制是否执行注释处理和/或编译。
  -processor <class1>[,<class2>,<class3>...]
        要运行的注释处理程序的名称; 绕过默认的搜索进程
  --processor-module-path <path>
        指定查找注释处理程序的模块路径
  --processor-path <path>, -processorpath <path>
        指定查找注释处理程序的位置
  -profile <profile>           请确保使用的 API 在指定的配置文件中可用
  --release <release>          为指定的 Java SE 发行版编译。支持的发行版:7, 8, 9, 10, 11, 12, 13
  -s <directory>               指定放置生成的源文件的位置
  --source <release>, -source <release>
        提供与指定的 Java SE 发行版的源兼容性。支持的发行版:7, 8, 9, 10, 11, 12, 13
  --source-path <path>, -sourcepath <path>
        指定查找输入源文件的位置
  --system <jdk>|none          覆盖系统模块位置
  --target <release>, -target <release>
        生成适合指定的 Java SE 发行版的类文件。支持的发行版:7, 8, 9, 10, 11, 12, 13
  --upgrade-module-path <path>
        覆盖可升级模块位置
  -verbose                     输出有关编译器正在执行的操作的消息
  --version, -version          版本信息
  -Werror                      出现警告时终止编译

编译当前工程

目标:编译./src/demo目录下的fuck_xyr.java,并将编译后的fuck_xyr.class文件输出至./bin/demo文件夹下(就如同ecplise所做的那样)

fuck_xyr.java文件内容如下

package demo;


public class fuck_xyr {
    public static void main(String[] args)  {
        // TODO Auto-generated method stub
        String url = "https://jingyan.baidu.com/article/bad08e1e23982609c851219e.html";
        System.out.println(url);
    }

}

编译命令javac .\src\demo\fuck_xyr.java -d ./bin

编译后的工程结构如下

PS D:\叶建成\JAVA\primary\test_jsoup - 副本> javac .\src\demo\fuck_xyr.java -d ./bin/demo
PS D:\叶建成\JAVA\primary\test_jsoup - 副本> tree /f
卷 DATA 的文件夹 PATH 列表
卷序列号为 F0A7-7514
D:.
│  .project
│
├─bin
│  └─demo
│          fuck_xyr.class
│
├─lib
│      jsoup-1.11.3.jar
│
└─src
    ├─demo
    │      Demo.java
    │      fuck_xyr.java
    │
    └─test

可以发现在./bin/demo目录下多了一个fuck_xyr.class

运行

PS D:\叶建成\JAVA\primary\test_jsoup - 副本> java -classpath "./bin" demo.fuck_xyr  
https://jingyan.baidu.com/article/bad08e1e23982609c851219e.html

引入其他jar包

如何在java中引用jar包,并加入编译运行?
如何调用jar包?
如何编译运行jar包?

这些可能都是你关心的,下面的步骤让你完全的了解java的编译运行参数

编译

编译当前工程

目标:编译./src/demo目录下的fuck_xyr.java,并将编译后的fuck_xyr.class文件输出至./bin/demo文件夹下(就如同ecplise所做的那样)

fuck_xyr.java文件内容如下

package demo;

import java.io.IOException;

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class Demo {

    public Demo() {
        // TODO Auto-generated constructor stub
    }

    // throws IOException
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        String url = "https://jingyan.baidu.com/article/bad08e1e23982609c851219e.html";
        Connection connection = Jsoup.connect(url);
        Document document = connection.get();
        System.out.println(document.html());
    }

}

一个非常简单调用jar请求网页的操作

编译命令javac .\src\demo\Demo.java -d ./bin -classpath "./lib/jsoup-1.11.3.jar"

编译后的工程结构如下

PS D:\叶建成\JAVA\primary\test_jsoup - 副本> tree /f
卷 DATA 的文件夹 PATH 列表
卷序列号为 F0A7-7514
D:.
│  .project
│
├─bin
│  └─demo
│          Demo.class
│          fuck_xyr.class
│
├─lib
│      jsoup-1.11.3.jar
│
└─src
    ├─demo
    │      Demo.java
    │      fuck_xyr.java
    │
    └─test

发现在./bin/demo下多了一个Demo.class

运行

运行命令:java -classpath "./bin;./lib/jsoup-1.11.3.jar" demo.Demo


universe_king
3.4k 声望677 粉丝