2014-02-24 3 views
0

간단한 클라우드 저장소 (simplecloud)에 문제가 있습니다. 내가 메이븐과 콘솔 출력 다음과 같은 오류를 실행하면 :파일을 찾을 수 없습니다. Maven

java.io.FileNotFoundException: \var\key (The system cannot find the path specified) 

소스 코드는 여기에 있습니다 : src git

다음과 같이이 디렉토리에 존재하지만 :

어떤 아이디어? 사전에

덕분에

enter image description here

POM :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.pliablematter</groupId> 
<artifactId>simple-cloud-storage</artifactId> 
<version>1.0-SNAPSHOT</version> 
<name>Simple Cloud Storage</name> 
<description>A simple wrapper around the Google Cloud Storage API</description> 

<dependencies> 
    <dependency> 
     <groupId>com.google.http-client</groupId> 
     <artifactId>google-http-client-jackson2</artifactId> 
     <version>1.15.0-rc</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.apis</groupId> 
     <artifactId>google-api-services-storage</artifactId> 
     <version>v1beta2-rev6-1.15.0-rc</version> 
    </dependency> 



    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>LATEST</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

+0

junit에서 새로운 버전이 나오면 빌드가 실패 할 수도있는 특정 버전과 ** 가장 최근의 원인을 사용해야합니다. 즉, 빌드가 재현 가능하지 않습니다. – khmarbaise

+0

@ David, DId이 문제를 해결하겠습니까?. 같은 문제가 생겼어.이 문제를 해결해 줄 수 있니? –

+0

이 키를 폴더에 넣었을 때 :/simple-cloud-storage/src/main/resources/var/그리고 프로젝트가 실행되고있는 깨끗한 메이븐 빌드를 만들었고 JAR 파일을 가지고있었습니다. 때로는 초당 x 요청에 제한되어 있기 때문에 테스트가 통과하지 못했지만 10 점 중 1 점은 생각했습니다. – David

답변

0

난 당신이 CreateBucketTest의 관련 코드를 게시하는 것이 좋습니다.

나는 당신의 파일이 \var\key이라는 테스트를 믿고 있습니다. 물론 이것은 당신의 생각 파일이 정말 \var\key

제안에 있지 않기 때문에 당신에게 문제를 일으킬 것입니다 :

  1. 을 대신 절대 경로에서 읽는, 당신이 그것을 바꿀 수 있는지 클래스 패스 자원의 개시 스트림.

  2. key 파일을 src/main/test/resources에 넣으십시오. 당신이 테스트를 실행하면 위의 설정으로 src/main/test/resources/cloudkey/key

  3. 아래에 넣어 가정,의 key 파일 위치에서 클래스 경로 아래에있을 것입니다 /cloudkey/key


편집 :

후 귀하의 코드를 조금 읽으십시오. 다음은 몇 가지 제안 사항입니다.

먼저 getStorage r 매우 친숙하지 않은 시스템 속성에있는 elies.

  1. /src/test/resourceskey을 넣어 : 당신이 어쨌든 코드를 리팩토링하지 않을 생각하지만 좀 더 테스트 친화적 인 방법

    에 코드를 작성하는 고려, 여기 당신이 할 수있는 한 가지 방법입니다. 이렇게하면 컴파일시 keyBASE_DIR/target/test-classes/key이됩니다.

  2. 여기서 모든 테스트에 대해 단 하나의 키가 있다고 가정합니다. 당신이해야 할 일은 key의 올바른 경로로 시스템 속성 private.key.path을 설정하는 것입니다. surefire plugin : http://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html을 구성하면됩니다. 값이 ${project.build.testOutputDirectory}/keysystemPropertyVariablesprivate.key.path을 추가하십시오. 이렇게하면 테스트가 실행될 때 sys 속성 private.key.path이 올바른 값으로 설정되어 테스트가 올바르게 실행되어야합니다.
+0

게시물을 업데이트했습니다. 나는 당신이 제안한 것을했지만 여전히 오류로 달리고있다. 심지어 프로젝트의 모든지도에 배치했지만 여전히 효과가 없습니다. – David

+0

이 키는 파일을 읽는 방법입니다. 파일을 사방에 배치하여 작동하지 않습니다. 당신이'src /'에 넣은 파일들에 어떤 일이 일어나는지, 그리고 어떻게 테스트에 사용 가능한지 이해하려고 노력하십시오. –

0

\ var \ key 디렉토리가 빌드를 위해 Maven이 만드는 대상 디렉토리에 있는지 확인하십시오. 나는 사지에 나가 아마 그것이 지금 거기에 있지 않을 것이라고 추측 할 것이다. 비표준 장소에서 \ var \ key를 가져야하는 경우 Maven Resources Plugin을 사용하여 대상 디렉토리에 복사 할 수 있습니다. @Adrian Shum이 말했듯이, test \ resources는 Maven이 찾을 수있는 표준 장소가 될 것입니다.

편집 :

빌드에서 플러그인 노드 내부 ...이 옵션을 탐구하고 싶었다처럼, 그래서 여기에 보인다 당신이 당신의 메이븐 POM의 메이븐 자원 플러그인을 사용할 수있는 방법, 추가

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
</plugin> 

그런 다음 다시 빌드 내부의 플러그인 노드 후, 예를 들어, 당신은 대상을 통해 복사해야 할 디렉토리 또는 디렉토리를 추가

<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> 
+0

방금 ​​내 var 폴더를 대상 디렉토리에 넣었습니다. 그러나 폴더를 실행하면 보고서가 사라집니다. – David

+0

네, Maven Resources Plugin을 사용하여 리소스를 대상 디렉토리에 복사해야한다고 언급 한 것입니다. 필요한 항목을 테스트/리소스 트리로 재배치 할 수 있다면 그렇게하지 않을 것입니다. Maven과 실제로 싸워서는 안된다는 것을 알았습니다. – unigeek

+0

maven-resources-plugin을 사용해야하는 경우에 대한 예제가 추가되었습니다. src/var/key가 아닌 src/var를 원할 수도 있습니다. 대상 디렉토리에있는 리소스를 볼 수 있도록 코드와 동기화하십시오. – unigeek

0

처음에 \을 삭제하십시오. 또한 다른 사람들에 의해 지적 된대로 이것은 분명히 테스트 키 (이름으로 판단)이므로 src/test/resources/var/key 아래에 배치하고 var/key/test.p12을 찾기 위해 코드를 변경해야합니다.

+0

상대 경로 대신 절대 경로 여야했습니다 (알지 못함). – David

관련 문제