2014-01-08 7 views
1

svnant의 propget 작업을 사용하여 SVN 속성 값을 쿼리하려고하지만 문제가 발생했습니다.SVNnt - propget 작업 SVNKit을 사용하여 NoSuchMethodError

<project name="svntest" default="test"> 

<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" /> 

<svnSetting javahl="false" svnkit="true" username="xxx" password="yyy" id="svn.settings" /> 

<target name="test"> 
    <svn refid="svn.settings"> 
     <update dir="." /> 
     <propget path="file.xml" name="svn:keywords" property="prop.value" /> 
    </svn> 
    <echo message="${prop.value}" /> 
</target> 

</project> 

내 SVN의 환매 특약은 1.7.5에 내가 호환되어야 1.7 svnkit 한 : 나는 빌드 파일의 폴더를 업데이트 한 다음 속성을 조회하는 간단한 개미 대상을 작성한

.

propget 및 echo 행을 주석 처리하면 폴더를 올바르게 업데이트합니다. 나는 SVN을 조회 할 때 는하지만 :

C : \ somepath는 \ test.xml의 : 11 : java.lang.NoSuchMethodError : org.tigris.subversion.javahl 나는이 오류가 특정 파일에 대한 속성을 키워드 . .PropertyData (LORG/티그리스/전복/JavaHL을/SVNClientInterface; Ljava/LANG/문자열; Ljava/LANG/문자열; Ljava/LANG/문자열 [B) I는 SVN 설정 한

V는 : 대한 속성 키워드 file.xml을 "value"로 설정하여 존재하지 않게하고 커밋합니다.

존재하지 않는 SVN 속성 (예 : "testprop")을 찾기 위해 propget name 인수를 변경하면 "$ {prop.value}"를 반환하지만 실패하지는 않습니다. prop.value 속성이 설정되지 않습니다. 실제로 custom.xml의 "testprop"SVN 속성을 file.xml에 추가하면 위의 오류가 다시 발생합니다. 따라서 속성을 찾고 값을 얻으려고 시도 할 때만 발생하는 것 같습니다.

이전에 javahl을 사용하려고 했으므로 false로 설정하고 대신 svnkit을 사용했습니다. 그러나 업데이트 작업이 작동 이후 javahl/svnkit 바인딩 문제가 생각하지 않았을 것입니다.

도움을 주시면 감사하겠습니다.

답변

1

SVNKit의 JavaHL 바인딩은 svnkit-javahl16-*VERSION*.jar이라는 파일에 있습니다. 이 파일은 SVNKit 웹 사이트에서 다운로드 한 standalone.ziplib 디렉토리 아래에 있습니다.

이 Jar 파일은 Ant 클래스 경로에 있어야합니다. -

편집 2014년 1월 10일에 따라 업 :

은 "실종"방법에 확실히 svnkit-javahl16-1.7.11.jar입니다 : 어떻게 든

> javap -s -classpath svnkit-javahl16-1.7.11.jar org.tigris.subversion.javahl.PropertyData 
... 
org.tigris.subversion.javahl.PropertyData(org.tigris.subversion.javahl.SVNClientInterface, java.lang.String, java.lang.String, java.lang.String, byte[]); 
    Signature: (Lorg/tigris/subversion/javahl/SVNClientInterface;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V 
... 

,이 생성자 ISN 개미의 클래스 패스에서 발견되지 않았습니다. 명령 프롬프트에서

다음 명령을 실행 : 출력의 눈사태가 생성됩니다

> set ANT_OPTS=-verbose:class 
> ant <= your Ant command line here 

.

[Loaded org.tigris.subversion.javahl.PropertyData from file:/...] 

은 우리가 file:/... 시스템에 무엇인지 알려이에 다음과 같은 라인을 묻혀됩니다. 정확히 일치하는 것이 없으면 이름에 "javahl"이 포함 된로드 된 클래스에 대한 참조가 있는지 확인하십시오.

+0

안녕하세요 차드,이 병은 이미 내 Ant 클래스 경로에 있습니다. 이전에 SVNKit 독립 실행 형 zip lib (전체 16 개)에서 다른 병을 추가했습니다. FYI * VERSION *은 1.7.11입니다. – Neil

+0

팁 주셔서 감사하지만 나는 이것을 알아 냈습니다. Eclipse를 통해 Ant를 사용하고 Ant 설정에서 svnkit-javahl16-1.7.11.jar을 Ant Home 항목뿐만 아니라 다른 "svnjavahl"jar 파일에 추가했습니다. 이걸 제거하면 잘 작동합니다. – Neil