参考文献

Java获取资源路径

  • Java中获取资源时,经常使用class.getResource()ClassLoader.getResource获取资源时,获取的是编译之后的class文件资源,而不是获取Java源码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    package com.holelin.sundry.demo;

    import org.springframework.core.io.ClassPathResource;

    import java.io.File;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.util.stream.Stream;

    /**
    * @Description:
    * @Author: HoleLin
    * @CreateDate: 2020/7/29 15:24
    * @UpdateUser: HoleLin
    * @UpdateDate: 2020/7/29 15:24
    * @UpdateRemark: 修改内容
    * @Version: 1.0
    */

    public class GetResourceTest {
    public static void main(String[] args) throws IOException {
    // path不以'/'开头,默认是从此类所在的包下面取资源
    System.out.println(GetResourceTest.class.getResource(""));
    // path以'/'开头,则是从classpath根下获取
    System.out.println(GetResourceTest.class.getResourceAsStream("/"));
    // path是从classpath根获取的
    System.out.println(GetResourceTest.class.getClassLoader().getResource(""));
    // path不能以'/'开头
    System.out.println(GetResourceTest.class.getClassLoader().getResource("/"));
    // 在Spring框架下
    File file = org.springframework.util.ResourceUtils.getFile("classpath:application.yml");
    File dir = org.springframework.util.ResourceUtils.getFile("classpath:template");
    // File dir2 = org.springframework.util.ResourceUtils.getFile("classpath:template");
    ClassPathResource classPathResource = new ClassPathResource("template/");
    // ClassPathResource classPathResource2 = new ClassPathResource("template");
    System.out.println("isFile:" + classPathResource.getFile().isFile());
    System.out.println("isDirectory:" + classPathResource.getFile().isDirectory());
    try (Stream<Path> paths = Files.walk(classPathResource.getFile().toPath())) {
    paths.forEach(System.out::println);
    }
    }
    }

    Output
    file:/Users/holelin/Projects/MySelf/Java-Notes/sundry/target/classes/com/holelin/sundry/demo/
    java.io.ByteArrayInputStream@192b07fd
    file:/Users/holelin/Projects/MySelf/Java-Notes/sundry/target/classes/
    null
    isFile:false
    isDirectory:true
    /Users/holelin/Projects/MySelf/Java-Notes/sundry/target/classes/template
    /Users/holelin/Projects/MySelf/Java-Notes/sundry/target/classes/template/1.txt

Ubuntu查找JDK的安装位置

  • 使用 update-alternatives --display name 命令查看

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # update-alternatives --display java
    java - auto mode
    link best version is /usr/lib/jvm/java-17-openjdk-amd64/bin/java
    link currently points to /usr/lib/jvm/java-17-openjdk-amd64/bin/java
    link java is /usr/bin/java
    slave java.1.gz is /usr/share/man/man1/java.1.gz
    /usr/lib/jvm/java-17-openjdk-amd64/bin/java - priority 1711
    slave java.1.gz: /usr/lib/jvm/java-17-openjdk-amd64/man/man1/java.1.gz
    root@ai-dev:/home/junlinchen/dockerfile/jenkins# cd /usr/lib/jvm/java-17-openjdk-amd64