Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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库中创建可由消费应用程序读取的文件_Java - Fatal编程技术网

在Java库中创建可由消费应用程序读取的文件

在Java库中创建可由消费应用程序读取的文件,java,Java,我正在创建一个Java sdk,我最终希望一个名为version的文件包含sdk当前版本的字符串 我想读取这个文件,并在sdk中进行的底层API调用中传递它 目前该文件位于src/main/resources/version中,仅包含0.1.0 我有一个读取文件并返回版本的方法 private静态字符串getVersion(){ URL versionFile=ConfigurationUtils.class.getResource(“版本”); Path Path=Path.get(Strin

我正在创建一个Java sdk,我最终希望一个名为
version
的文件包含sdk当前版本的字符串

我想读取这个文件,并在sdk中进行的底层API调用中传递它

目前该文件位于
src/main/resources/version
中,仅包含
0.1.0

我有一个读取文件并返回版本的方法

private静态字符串getVersion(){
URL versionFile=ConfigurationUtils.class.getResource(“版本”);
Path Path=Path.get(String.valueOf(versionFile));
字符串版本=null;
试一试{
version=Files.readAllLines(path).get(0);
}捕获(IOE异常){
//如果发生这种情况,则项目永远不应在未生成的情况下生成,因此只需打印stacktrace即可
e、 printStackTrace();
}
返回版本;
}
在另一个我尝试使用这个sdk的项目中,我在这一行得到了一个
java.nio.file.NoSuchFileException:null

不过,我可以看到该文件确实存在于我的依赖项中

你知道我错过了什么吗

**更新**

当尝试来自可能的副本的建议时,我的sdk甚至不会编译b/c。当运行我的测试时,这一行会出现空指针异常


src/main/resources/version
肯定存在

您无法从Jar中读取资源,因为您试图将其作为一个文件读取,而它不在其中。相反,您应该做的是使用BufferedReader读取InputStream的所有行

私有静态字符串getVersion()引发IOException{
try(BufferedReader reader=新的BufferedReader(
新的InputStreamReader(ConfigurationUtils.class.getResourceAsStream(“版本”)){
返回reader.lines()
.findFirst()
.orelsetrow(IllegalStateException::new);
}
}

没有。我将
getVersion
中的代码更改为
try(InputStream-in=ConfigurationUtils.class.getResourceAsStream(“版本”);BufferedReader-reader=new-BufferedReader(new-InputStreamReader(in)){version=reader.readLine();
我的sdk项目不会生成。当我运行测试时,
src/main/java/org/catalystal/sdk/version
中不断出现一个版本文件。值得一提的是,我打赌使用返回版本的静态方法自动生成一个版本类会更快。它完成同样的任务,需要几分钟时间,更小、更干净呃,运行时速度明显加快。从什么自动生成?何时自动生成?@Catfish当您的项目没有生成时,您必须检查编译错误。请记住
Files.readAllLines()
从文件中读取,但
版本
条目在
jar中
。请编辑您的问题,以包括源代码和在副本中提到的文件读取时收到的错误消息。@Progman我已使用可能重复建议中的最新尝试更新了我的问题。我想我找到了答案out.I缺少
getClassLoader()
。因此
ConfigurationUtils.class.getResourceAsStream(“版本”);
应该是
ConfigurationUtils.class.getClassLoader().getResourceAsStream(“版本”);