Thread.currentThread()。getContextClassLoader()。getResource(“。”)在windows和linux上有不同的结果

时间:2013-05-01 12:05:09

标签: java linux windows resources

我有一个简单的Java类:

public class T {
    public static void main(String[] args) {
        System.err.println(Thread
              .currentThread()
              .getContextClassLoader()
              .getResource("."));
    }
}

在Windows上运行上面的类:

file:/T:/java/

在Linux上运行时我得到了不同的东西:

jar:file:/usr/lib/jvm/java-6-openjdk-common/jre/lib/ext/pulse-java.jar!/

这个问题导致我的程序在Linux上失败,因为它无法找到我指定的文件。关于如何解决它的任何想法?

1 个答案:

答案 0 :(得分:2)

程序的当前目录可能在或可能不在类路径中,具体取决于程序的执行方式。如果您需要获取可能在jar文件中或可能在当前目录中的内容,那么您应该使用两个单独的检查:

  1. 首先检查类路径
  2. 如果找不到
  3. ,则检查当前目录(您可以使用new File("")获取当前工作目录。)