如何将目录指定为类路径,以便在运行java应用程序时使用classloader读取其中的文件?
假设目录如何将目录指定为类路径,以便在运行java应用程序时使用classloader读取其中的文件?,java,classpath,Java,Classpath,假设目录dir中存在一个文件abc.txt。我正在尝试使用以下命令运行java应用程序 java-cp目录;myjar.jar.com.example.Main 在Main类中,我试图像这样访问这个文件getClass().getResource(“/abc.txt”)。但这是返回空值。我不确定这里出了什么问题。任何指针都将受到欢迎。由于文件位于类路径目录的根目录中,您需要使用“/abc.txt”,否则它将在包文件夹中查找相关类 正如javadoc所说: 在委派之前,使用以下算法从给定的资源名称
dir
中存在一个文件abc.txt
。我正在尝试使用以下命令运行java应用程序
java-cp目录;myjar.jar.com.example.Main
在Main类中,我试图像这样访问这个文件
getClass().getResource(“/abc.txt”)
。但这是返回空值。我不确定这里出了什么问题。任何指针都将受到欢迎。由于文件位于类路径目录的根目录中,您需要使用“/abc.txt”
,否则它将在包文件夹中查找相关类
正如javadoc所说:
在委派之前,使用以下算法从给定的资源名称构造绝对资源名称:
- 如果
以名称
('/'
)开头,则资源的绝对名称是'\u002f'
后面的部分名称
- 否则,绝对名称的形式如下:
其中,modified_package_name/name
是此对象的包名,用modified\u package\u name
替换'/'
('.
)'\u002e'
由于该文件位于类路径目录的根目录中,因此需要使用
“/abc.txt”
,否则它将在包文件夹中查找相关类
正如javadoc所说:
在委派之前,使用以下算法从给定的资源名称构造绝对资源名称:
- 如果
以名称
('/'
)开头,则资源的绝对名称是'\u002f'
后面的部分名称
- 否则,绝对名称的形式如下:
其中,modified_package_name/name
是此对象的包名,用modified\u package\u name
替换'/'
('.
)'\u002e'
您可以使用
getResource(“/abc.txt”)
获取位于类路径顶层的资源。如果省略/
,则会在相对于类的路径中搜索资源。请参阅javadoc for getResource(),我已经得到了它,但dir不是运行应用程序的当前目录。它是dir的父目录。它不工作。@HarshYadav让我们假设dir
是C:\foo
,您的类是com.example.Test
。如果指定“abc.txt”
,它将查找C:/foo/com/example/abc.txt
。如果指定“/abc.txt”
,它将查找C:/foo/abc.txt
。“当前目录根本没有被选中。@Andreas But later不工作。”。我现在在目录c:\example
中,它包含myjar.jar
和目录dir
,而目录又包含文件abc
@HarshYadav,应该仍然可以工作,所以您没有告诉我们的是错误的。请提供,例如,显示您的目录结构,哪些文件在哪里,您的完整类名是什么,等等。您可以使用getResource(“/abc.txt”)
获取位于类路径顶层的资源。如果省略/
,则会在相对于类的路径中搜索资源。请参阅javadoc for getResource(),我已经得到了它,但dir不是运行应用程序的当前目录。它是dir的父目录。它不工作。@HarshYadav让我们假设dir
是C:\foo
,您的类是com.example.Test
。如果指定“abc.txt”
,它将查找C:/foo/com/example/abc.txt
。如果指定“/abc.txt”
,它将查找C:/foo/abc.txt
。“当前目录根本没有被选中。@Andreas But later不工作。”。我现在在目录c:\example
中,它包含myjar.jar
和目录dir
,而目录又包含文件abc
@HarshYadav,应该仍然可以工作,所以您没有告诉我们的是错误的。请提供,例如,显示您的目录结构,哪些文件在哪里,您的完整类名是什么,等等。