Duke快速重复数据删除:java.lang.UnsupportedOperationException:操作尚不支持?
我正在尝试使用Duke快速重复数据删除引擎在我工作的公司的数据库中搜索一些重复记录。
我从命令行运行它,如下所示:
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)
我的配置文件如下所示:
0.82 0.80 test ID LNAME no.priv.garshol.duke.comparators.ExactComparator 0.6 0.8 FNAME no.priv.garshol.duke.comparators.ExactComparator 0.6 0.8 MNAME no.priv.garshol.duke.comparators.ExactComparator 0.3 0.5 SSN no.priv.garshol.duke.comparators.ExactComparator 0.0 1.0
它并没有真正告诉我什么是不受支持的…我只是尝试一下,配置还没有什么严重的。
正如mbonaci所说,问题是JDBC驱动程序的isClosed()方法没有实现。 即使实施它也不会简单地写“返回关闭”。
我现在为这个问题添加了一个丑陋的解决方法。 请做一个“hg pull”然后再试一次。
您使用的是哪个Java版本?
sun.jdbc.odbc.JdbcOdbcResultSet.isClosed首次出现在Java 1.6中。 它仍然在v1.7中看起来像这样(我没有在Java 8中检查过):
public boolean isClosed() throws SQLException { throw new UnsupportedOperationException("Operation not yet supported"); }
所以根本就不要调用那个方法。 使用其他方法检查结果集是否已关闭。
或者,如果您无法更改代码,请向项目的作者寻求帮助(我看到在关闭RS时需要努力解决exception )。