Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将目录指定为类路径,以便在运行java应用程序时使用classloader读取其中的文件?_Java_Classpath - Fatal编程技术网

如何将目录指定为类路径,以便在运行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,应该仍然可以工作,所以您没有告诉我们的是错误的。请提供,例如,显示您的目录结构,哪些文件在哪里,您的完整类名是什么,等等。