Bootstrap

Java获取classpath路径总结

Java获取classpath路径总结

1概述

这里我对异常情况也做了屏蔽,给大家参考一下。资源文件放在资源目录即可。

1.1静态获取

private static URL currentStaticClassPathResourceUrl = null;

static {
    //1.静态调用:不能加/,而且还没有: file:
    currentStaticClassPathResourceUrl
= Thread.currentThread().getContextClassLoader().getResource("packetText1.txt");
    if (null == currentStaticClassPathResourceUrl) { //支持非:JDK7JDK8
        currentStaticClassPathResourceUrl
= Thread.currentThread().getContextClassLoader().getResource("/packetText1.txt");
    }
    System.out.println("[static]" + currentStaticClassPathResourceUrl.getPath());
}

 

public void testImmulateClient2() {

    String ip = "127.0.0.1";
    int port = 1500;

    PacketImmulateSender packetSender = new PacketImmulateSender(ip, port, new File(currentStaticClassPathResourceUrl.getPath()));
    Thread senderThread = new Thread(packetSender);
    senderThread.start();

    try {
        Thread.sleep(2000 * 60);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("SubjectObserverClientTest End.");
}

 

 

1.2对象方法获取

public void testImmulateClient() {

    String ip = "127.0.0.1";
    int port = 1500;


    URL currentNoStaticClassPathResourceUrl = null;
    //非静态调用:/
    
currentNoStaticClassPathResourceUrl = this.getClass().getResource("/packetText1.txt");
    if (null == currentNoStaticClassPathResourceUrl) {
        currentNoStaticClassPathResourceUrl = this.getClass().getResource("packetText1.txt");
    }
    System.out.println("[no-static]" + currentNoStaticClassPathResourceUrl.getPath());

    PacketImmulateSender packetSender = new PacketImmulateSender(ip, port, new File(currentNoStaticClassPathResourceUrl.getPath()));
    Thread senderThread = new Thread(packetSender);
    senderThread.start();

    try {
        Thread.sleep(2000 * 60);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    System.out.println("SubjectObserverClientTest End.");
}

;