【问题标题】:Adding a non-jar file to the Java class path将非 jar 文件添加到 Java 类路径
【发布时间】:2011-07-20 15:40:46
【问题描述】:

我正在尝试通过类路径为我的应用程序提供一个 .txt 文件。在我的启动脚本(与 .txt 文件位于同一文件夹中)中,我设置了以下内容:

设置 CLASSPATH=%CLASSPATH%;%CD%\sample.txt java -classpath %CD%\sample.txt

在我的应用程序中,我尝试了以下方法:

  1. getClass().getResource("sample.txt")
  2. getClass().getResource("/sample.txt")
  3. getClass().getResource("classpath:sample.txt")

以上都不起作用。任何帮助将不胜感激。

【问题讨论】:

  • 您为什么要尝试将CLASSPATH 用于不包含类的内容?
  • @Daniel - 将类路径用于非类资源(例如默认属性文件、消息包、模板)相当普遍。
  • 你试过Thread.currentThread().getContextClassloader().getResource()吗? getClass 使用的类加载器取决于你调用方法的类。
  • @Andrew - 当然,询问细节没问题。我只是广义地解释了评论,即“你为什么要这样做?”。我不反对在这个特定情况下为某些上下文提供“为什么”会很好。
  • @Rob 我认为我们在同一个波长上。感谢您的澄清。

标签: java classpath


【解决方案1】:

你必须将你的txt文件打包到jar中或者放在classpath中包含的目录中。

【讨论】:

  • 错了,当然可以将文件添加到类路径中。例如(在 nix 中): java -cp "lib/:etc" 在 lib 中有一堆 jar 文件,在 etc 中有 .txt、.xml、.properties 等。然后用 getResourceAsStream("myFile.txt") 加载它们
  • "错了,你当然可以将文件添加到类路径中。"您刚刚重复了这个答案所说的内容 - 将文件放在目录中 (etc),然后将该目录添加到类路径 (java -cp etc)。
【解决方案2】:

您应该将包含文件的目录添加到您的类路径,而不是文件本身:

set CLASSPATH=%CLASSPATH%;%CD%

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 2018-11-07
    • 2015-09-27
    • 2021-04-22
    相关资源
    最近更新 更多