Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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
Eclipse 在Maven中找不到文件_Eclipse_Maven_Filenotfoundexception - Fatal编程技术网

Eclipse 在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

我在使用简单云存储()时遇到了一些问题。当我使用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.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>