将非jar文件添加到Java类路径

11

我正在尝试通过类路径使一个 .txt 文件对我的应用程序可用。在启动脚本中——该脚本与 .txt 文件位于同一文件夹中——我设置了以下内容:

set 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")

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


2
你为什么要尝试使用CLASSPATH来处理不包含类的东西? - Daniel DiPaolo
3
通常情况下,使用类路径(classpath)来存储非类资源(例如默认属性文件、消息包和模板)是相当普遍的做法。 - Rob Hruska
你尝试过使用 Thread.currentThread().getContextClassLoader().getResource() 吗?getClass 使用的类加载器取决于你调用该方法的类。 - home
1
@Andrew - 当然,问具体问题没有问题。我只是广泛解释了这个评论,即“你为什么要这样做?”我并不反对在这种特定情况下为了一些背景信息而提供“为什么”。 - Rob Hruska
1
@Rob 我觉得我们在同一频率上。谢谢你的澄清。 - Andrew Thompson
显示剩余2条评论
2个回答

4
你必须将你的txt文件打包到jar文件中或者将其放置在类路径中包含的目录中。

7
当然可以将文件添加到类路径中。例如(在*nix系统中):java -cp "lib/*:etc"在lib目录下有一堆jar文件,在etc目录下有.txt、.xml、.properties等文件。您可以使用getResourceAsStream("myFile.txt")来加载它们。 - Eldelshell
当然可以将文件添加到类路径中。你刚才重复了这个答案所说的 - 将文件放置在一个目录(etc)中,然后将该目录添加到类路径中(java -cp etc)。 - Adrian Baker

1

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

set CLASSPATH=%CLASSPATH%;%CD%

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接