2012-10-11 5 views
1

Duke Fast Deduplication Engine을 사용하여 내가 일하는 회사의 데이터베이스에있는 일부 중복 레코드를 검색하려고합니다.Duke Fast Deduplication : java.lang.UnsupportedOperationException : 아직 지원되지 않는 작업입니까?

는이 같은 명령 줄에서 실행 :

java -cp "C:\utils\duke-0.6\duke-0.6.jar;C:\utils\duke-0.6\lucene-core-3.6.1.jar" no.priv.garshol.duke.Duke --showmatches --verbose .\config.xml 

하지만 오류 얻을 :

Exception in thread "main" java.lang.UnsupportedOperationException: Operation no 
t yet supported 
     at sun.jdbc.odbc.JdbcOdbcResultSet.isClosed(Unknown Source) 
     at no.priv.garshol.duke.datasources.JDBCDataSource$JDBCIterator.close(JD 
BCDataSource.java:115) 
     at no.priv.garshol.duke.Processor.deduplicate(Processor.java:152) 
     at no.priv.garshol.duke.Duke.main_(Duke.java:135) 
     at no.priv.garshol.duke.Duke.main(Duke.java:38) 

내 구성 파일은 다음과 같습니다

<duke> 
    <schema> 
     <threshold>0.82</threshold> 
     <maybe-threshold>0.80</maybe-threshold> 
     <path>test</path> 

     <property type="id"> 
       <name>ID</name> 
     </property> 

     <property> 
      <name>LNAME</name> 
      <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator> 
      <low>0.6</low> 
      <high>0.8</high> 
     </property> 

     <property> 
      <name>FNAME</name> 
      <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator> 
      <low>0.6</low> 
      <high>0.8</high> 
     </property> 

     <property> 
      <name>MNAME</name> 
      <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator> 
      <low>0.3</low> 
      <high>0.5</high> 
     </property> 

     <property> 
      <name>SSN</name> 
      <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator> 
      <low>0.0</low> 
      <high>1.0</high> 
     </property> 

    </schema> 
    <jdbc> 
      <param name="driver-class" value="sun.jdbc.odbc.JdbcOdbcDriver" /> 
      <param name="connection-string" value="jdbc:odbc:VT_DeDupe" /> 
      <param name="user-name" value="aleer" /> 
      <param name="password" value="**" /> 
      <param name="query" value="select SocialSecurityNumber, LastName, FirstName, MiddleName, empssn from T_Employees" /> 

      <column name="SocialSecurityNumber" property="ID" /> 
      <column name="LastName" property="LNAME" /> 
      <column name="FirstName" property="FNAME" /> 
      <column name="MiddleName" property="MNAME" /> 
      <column name="empssn" property="SSN" /> 
    </jdbc> 
</duke> 

그것은 아무튼를 지원되지 않는 것이 무엇인지 정말로 알려주지 않습니다. 아직 구성을 심각하게하는 것은 아니지만 그냥 시도하고 있습니다.

답변

1

mbonaci에 따르면, 문제는 JDBC 드라이버의 isClosed() 메소드가 구현되지 않았다는 것입니다. 이것은 단순히 "return closed"를 작성하는 것보다 어렵지 않습니다.

이제이 문제에 대한 추악한 해결 방법을 추가했습니다. "hg pull"을하고 다시 시도하십시오.

+0

해결 방법은 다음과 같습니다. http://code.google.com/p/duke/source/detail?r=42db1ff65497b5c136272473bc7703ab37d90beb 다시 감사합니다. larsga! – leeand00

1

사용중인 Java 버전은 무엇입니까?
sun.jdbc.odbc.JdbcOdbcResultSet.isClosed는 Java 1.6에서 처음 나타났습니다. 그리고 여전히 v1.7에서 이렇게 보입니다 (자바 8에서는 체크하지 않았습니다).

public boolean isClosed() throws SQLException { 
    throw new UnsupportedOperationException("Operation not yet supported"); 
} 

따라서이 메소드를 호출하지 마십시오. 결과 집합이 닫혀 있는지 확인하는 다른 방법을 사용하십시오.

코드를 변경할 수없는 경우 프로젝트 작성자에게 도움을 요청하십시오 (RS를 닫을 때 an effort to solve exception이 표시됨).

+0

Java 1.6.0_26 .... – leeand00

+0

나는 hg repo에서 가져 와서 maven3을 사용하여 컴파일했다. 새로운 jar 파일은 동일한 오류를 산출합니다. 나는 당신이 말한 수정 프로그램이 링크의 오른쪽에 표시되는 개정판 30a12f2fb61c라고 가정합니다. 저것은 바이너리에 대한 확신이없는 체크 아웃 한 개정판 인 것 같습니다. – leeand00