Java二进制文件没有从指定的类路径中获取资源

时间:2014-08-25 11:09:01

标签: java classpath classloader

我正在尝试将文本文件加载为InputStream,但是从未拾取txt文件,输入流值始终为 null 。我不知道为什么会这样,我想请求帮助。

nohup java  -jar crawler-jar-2014.11.0-SNAPSHOT.jar -classpath /home/nbsxlwa/crawler/resources/common-conf:/home/nbsxlwa/crawler/resources/dotcom-conf:./plugins/*:./lib/* & 

txt文件位于/home/nbsxlwa/crawler/resources/dotcom-conf目录中。我可以确认该文件确实存在,所以我不知道为什么文件没有被提取。设置如下:

  1. `System.getEnvironment(“java.class.path”)

    返回以下内容         价值crawler-jar-2014.11.0-SNAPSHOT.jar

  2. 代码块正在尝试用文本创建输入流。

  3.  String fileRules = conf.get(URLFILTER_REGEX_FILE);
    System.out.println("file rules = " + fileRules);
    
    // Pass the file as a resource in classpath.
    // return conf.getConfResourceAsReader(fileRules);
    // Pass the file as a resource in classpath.
    InputStream is = RegexURLFilter.class.getResourceAsStream("/" + fileRules);
    
    System.out.println("Inputstream is = " + is);
    System.out.println(ClassLoader.getSystemResourceAsStream(fileRules));
    

    上述代码段的输出是

    file rules = regex-urlfilter.txt
    Inputstream is = null
    null
    
    1. 我尝试将类路径文件夹添加到类路径MANIFEST.MF文件中。 MANIFEST.MF包含以下条目,但输出仍返回 null
    2.   

      Class-Path:resources / common-conf resources / dotcom-conf   resources / olb-conf lib / gora-cassandra-0.3.jar **其他JARS **

1 个答案:

答案 0 :(得分:1)

请注意java man page entry for -jar

  

使用此选项时,JAR文件是所有用户的来源   类和其他用户类路径设置将被忽略。

因此忽略了其他类路径条目。您必须使用普通的旧java命令,使用main方法指定一个类,并在类路径中包含.jar

您在MANIFEST中指定的相对路径是相对于JAR本身的,或者是完整的URL。