【问题标题】:Java binary not picking up resources from the specified class pathJava 二进制文件未从指定的类路径中获取资源
【发布时间】:2014-08-25 11:09:01
【问题描述】:

我正在尝试将文本文件加载为 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. 代码块正在尝试用文本创建输入流。

 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));

上面sn-p的输出是

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

类路径:资源/common-conf 资源/dotcom-conf 资源/olb-conf lib/gora-cassandra-0.3.jar ** 其他 JARS **

【问题讨论】:

    标签: java classpath classloader


    【解决方案1】:

    注意java man page entry for -jar

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

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

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

    【讨论】:

    • 我已经创建了包含类的文件夹。那行得通。
    猜你喜欢
    • 2011-08-16
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2012-09-16
    相关资源
    最近更新 更多