Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 使用gradle将外部配置文件添加到jar_Java_Gradle_Build.gradle - Fatal编程技术网

Java 使用gradle将外部配置文件添加到jar

Java 使用gradle将外部配置文件添加到jar,java,gradle,build.gradle,Java,Gradle,Build.gradle,我有两个外部文件要添加到jar文件中,并在类中访问这些文件。我使用java-jar命令从命令行运行这个jar文件。因此,当我使用绝对路径时,我可以访问文件内容,但当我使用相对路径时,我得到java.io.IOException:(没有这样的文件或目录)。我已将这两个文件都包含在src/main/resorces目录中。我试过使用file.conf、/file.conf、/file.conf,但都不起作用。还尝试在build.gradle中包含文件 来自{ [“file1.conf”、“file2

我有两个外部文件要添加到jar文件中,并在类中访问这些文件。我使用
java-jar
命令从命令行运行这个jar文件。因此,当我使用绝对路径时,我可以访问文件内容,但当我使用相对路径时,我得到
java.io.IOException:(没有这样的文件或目录)
。我已将这两个文件都包含在
src/main/resorces
目录中。我试过使用
file.conf、/file.conf、/file.conf
,但都不起作用。还尝试在build.gradle中包含文件
来自{
[“file1.conf”、“file2.conf”]
}


知道如何使用文件的相对路径访问java代码中的文件内容吗?

如果我理解正确,您希望访问驻留在类路径中的文件。这些文件将与您的应用程序打包在一起,您知道它们的名称。如果这是正确的,并且您并不特别需要
java.io.File
,而是需要一种接受文件内容的方法,那么我建议:

try (InputStream is = MyClass.class.getResourceAsStream("/file.conf")) {
    // do something with the input stream
}
如果愿意,还可以检索文件的
java.net.URL

简而言之,字符串属性的语法如下所示:

  • 如果属性以
    /
    开头,则从类路径的根解析名称。例如,如果运行
    java-jar hello.jar
    ,file.conf必须位于hello.jar的根目录下
  • 如果属性不是以
    /
    开头,则名称将相对于调用
    getResourceAsStream()
    方法的类进行解析

查看以获取更多信息。

我尝试了
URL=ClassLoader.getSystemClassLoader().getResource(“file.conf”)
url.getPath()
但不起作用。我仍然得到
(没有这样的文件或目录)
。我确实在jar的根目录下看到了我的文件。它在Eclipse中运行良好,但在使用
java-jar
命令时运行不正常我创建了一个属性文件,它工作了。但它不适用于.conf文件。因此,我通过
url.getPath()
打印了file.conf的路径。它显示的内容类似于
/Users/user/Desktop/workspace/project/build/libs/myProject-all-1.0.jar/file.conf
。是吗!在罐子之后,对吗?但是,当我从Eclipse打印该路径时,它会显示文件的正确路径,即
。/../Desktop/workspace/myProject/bin/file.conf
!对于内嵌在JAR中的资源来说,这是相当标准的。这应该是你的目标。Eclipse给出的路径引用JAR外部的资源。