在现有的项目中,我建立与摇篮(Windows 7中的Java 1.7.0.15)我已经升级MyBatis的库如下:MyBatis的升级原因,建立自己的错误
// MyBatis
compile "org.mybatis:mybatis:3.2.1"
compile "org.mybatis:mybatis-spring:1.2.0"
//compile "org.mybatis:mybatis:3.0.6"
//compile "org.mybatis:mybatis-spring:1.0.2"
现在,当我建我得到以下错误:
11:38:37.308 [INFO] [org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler]
Compiling with JDK 6 Java compiler API.
11:38:39.147 [ERROR] [system.err] ...java:14: error: DateTimeHandler is not abstract and does not override abstract method getNullableResult(ResultSet,int) in BaseTypeHandler
11:38:39.153 [ERROR] [system.err] public class DateTimeHandler extends BaseTypeHandler<DateTime> {
11:38:39.274 [ERROR] [system.err] Note: Some input files use or override a deprecated API.
11:38:39.279 [ERROR] [system.err] Note: Recompile with -Xlint:deprecation for details.
11:38:39.284 [ERROR] [system.err] 1 error
我已经检查了类百倍,它并在此改变正确的方法(实际上Eclipse的同意,因为它表明没有错误)。
我不知道为什么当一切都应该在Java 7下时,使用内部的Gradle类jdk6。有人知道这里发生了什么事吗?
这摇篮不喜欢的类:
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedTypes;
import org.joda.time.DateTime;
@MappedTypes(value = DateTime.class)
public class DateTimeHandler extends BaseTypeHandler<DateTime> {
public DateTimeHandler() {
}
@Override
public void setNonNullParameter(PreparedStatement ps, int i, DateTime parameter, JdbcType jdbcType) throws SQLException {
ps.setTimestamp(i, new java.sql.Timestamp((parameter.toDate()).getTime()));
}
@Override
public DateTime getNullableResult(ResultSet rs, String columnName) throws SQLException {
java.sql.Timestamp sqlTimestamp = rs.getTimestamp(columnName);
if (sqlTimestamp != null) {
return new DateTime(sqlTimestamp.getTime());
}
return null;
}
@Override
public DateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
java.sql.Timestamp sqlTimestamp = cs.getTimestamp(columnIndex);
if (sqlTimestamp != null) {
return new DateTime(sqlTimestamp.getTime());
}
return null;
}
}
但有不妥的地方,据我所看到的。正确的方法已经过时。
行固定构建:
添加在该方法中:
公共的DateTime getNullableResult(结果集RS,INT columnIndex)抛出的SQLException;
如果我在此方法上使用覆盖注释,但没有Gradle构建成功完成的注释,Eclipse错误。如果该方法被删除,Gradle会产生一个错误,说该类需要重写带有该签名的方法(或者被声明为抽象的)。
所以,虽然我的问题已解决,但我并不真正了解此错误的性质。
谢谢,使用摇篮1.4,-v的gradle显示 JVM:1.7.0_15公司(Oracle Corporation 23.7-B01) 操作系统:Windows 7 6.1 AMD64 – 2013-03-27 12:33:06
堆栈跟踪是:致:org.gradle.api.internal。 tasks.compile.CompilationFailedException:编译失败;详细信息请参阅编译器错误输出。 at org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler.execute(Jdk6JavaCompiler.java:42) at org.gradle.api.internal.tasks.compile.jdk6.Jdk6JavaCompiler.execute(Jdk6JavaCompiler.java: 33) – 2013-03-27 12:34:44
它应该使用这个JDK6类吗?这是错误的来源吗? – 2013-03-27 12:35:37