Eclipse 在Maven中找不到文件
我在使用简单云存储()时遇到了一些问题。当我使用Maven运行时,控制台输出以下错误:Eclipse 在Maven中找不到文件,eclipse,maven,filenotfoundexception,Eclipse,Maven,Filenotfoundexception,我在使用简单云存储()时遇到了一些问题。当我使用Maven运行时,控制台输出以下错误: java.io.FileNotFoundException: \var\key (The system cannot find the path specified) 源代码如下: 但是,它存在于如下所示的目录中: 有什么想法吗 提前谢谢 POM: 4.0.0 com.polibleMatter 简单云存储 1.0-快照 简单云存储 围绕Google云存储API的简单包装器 com.google.htt
java.io.FileNotFoundException: \var\key (The system cannot find the path specified)
源代码如下:
但是,它存在于如下所示的目录中:
有什么想法吗
提前谢谢
POM:
4.0.0
com.polibleMatter
简单云存储
1.0-快照
简单云存储
围绕Google云存储API的简单包装器
com.google.http-client
google-http-client-jackson2
1.15.0-rc
com.google.api
谷歌api服务存储
v1beta2-rev6-1.15.0-rc
朱尼特
朱尼特
最近的
测验
我建议您在
CreateBucketTest
中发布相关的代码片段
我相信在您的测试中,您正在打开一个文件\var\key
。显然,这会导致问题,因为您正在考虑的文件实际上并不位于\var\key
给你的一些建议:
键
文件放在src/main/test/resources
下。假设您将它放在src/main/test/resources/cloudkey/key
键
文件将位于类路径下的/cloudkey/key
编辑: 在阅读了一些代码之后,下面是一些建议: 首先,您的
getStorage
依赖于系统属性,该属性对测试不太友好。考虑以更友好的测试方式编写代码
不过,我相信您无论如何都不会重构代码,以下是一种方法:
键
放入/src/test/resources
中。这样,编译时,key
将被放入BASE\u DIR/target/test classes/key
李>
key
路径设置系统属性private.key.path
。您可以通过配置surefire插件来完成此操作:。添加一个值为${project.build.testOutputDirectory}/key的systemPropertyVariables
private.key.path
。这样,当测试运行时,sys属性private.key.path
将设置为正确的值,以便测试正常运行
确保您的\var\key目录存在于Maven为构建创建的目标目录中。我会孤注一掷,猜测它现在可能不在那里。如果必须将该\var\键放在非标准位置,可以使用将其复制到目标目录中。正如@Adrian Shum所建议的,test\resources将是Maven寻找它的标准场所 编辑: 看起来您想探索这个选项,下面是如何在Maven POM中使用Maven资源插件 在build下的plugins节点中,添加:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
</plugin>
org.apache.maven.plugins
maven资源插件
2.6
然后,在插件节点再次进入内部构建后,添加需要复制到目标的目录,例如:
<resources>
<resource><directory>src/main/resources</directory></resource>
</resources>
<testResources>
<testResource><directory>src/var/key</directory></testResource>
<testResource><directory>src/test/resources</directory></testResource>
</testResources>
src/main/resources
src/var/key
src/测试/资源
删除首字母\
。另外,正如其他人所指出的,由于这显然是一个测试密钥(从名称判断),您应该将它放在src/test/resources/var/key
下,并将代码更改为只查找junit中的var/key/test.p12
。您应该使用特定版本,而不是最新版本,因为如果发布新版本,您的构建可能会失败。换句话说,你的构建是不可复制的。@David,你解决了这个问题吗?。我遇到了同样的问题。你能给我这个问题的解决方案吗?嘿,当我把密钥放在文件夹:/simple cloud storage/src/main/resources/var/中,并完成了一个干净的maven构建时,项目正在运行,我有一个JAR文件,它工作正常。有时测试不通过,因为你被限制在每秒做x个请求,但我认为10个请求中有1个成功了。我更新了帖子。我按照你的建议做了,但仍然在运行错误。我甚至把它放在了项目的每一张地图上,但仍然没有效果。关键是你如何阅读文件。把文件放在任何地方都是行不通的。试着了解你放在src/
下的文件发生了什么,以及它是如何供你的测试使用的。我刚把我的var文件夹放在目标目录中,但当运行文件夹时,它会消失,报告也会出现。是的,这就是为什么我提到应该使用Maven资源插件将资源复制到目标目录。如果您能够将所需的项目重新定位到测试/资源树中,则不必费心这么做。但是,我发现对于Maven,我真的不想与之抗争。添加了示例,以防您不得不使用Maven资源插件。您可能需要修改它为您复制的目录——可能您想要src/var而不是src/var/key。只要让它与代码同步,这样它就可以看到目标目录中存在的资源。它需要是绝对路径,而不是相对路径(不知道)
<resources>
<resource><directory>src/main/resources</directory></resource>
</resources>
<testResources>
<testResource><directory>src/var/key</directory></testResource>
<testResource><directory>src/test/resources</directory></testResource>
</testResources>