Если вы не готовы поддержать компиляцию вашего приложения для Java 7, вы все равно можете скомпилировать для Java 1.6 с помощью компилятора Java 7.Вам потребуется установленная среда исполнения Java 1.6 (или SDK).Если вы попытаетесь скомпилировать класс MyDataSource.java
, который реализует заглушку DataSource
с использованием компилятора Java 7, вы можете увидеть следующее:
$ java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) Server VM (build 21.0-b17, mixed mode)
$ javac -version
javac 1.7.0
$ javac MyDataSource.java
MyDataSource.java:7: error: MyDataSource is not abstract and does not override abstract method getParentLogger() in CommonDataSource
public class MyDataSource implements DataSource {
^
1 error
Вы должны указать компилятору, что вы хотите использовать исходные файлынаписанный для Java 1.6, производит байт-код Java 1.6 и где найти JAR времени выполнения Java 1.6:
$ javac -source 1.6 -target 1.6 -bootclasspath <path to Java 1.6 JRE>/lib/rt.jar MyDataSource.java
$ file MyDataSource.class
MyDataSource.class: compiled Java class data, version 50.0 (Java 1.6)
$ javap MyDataSource
Compiled from "MyDataSource.java"
public class MyDataSource implements javax.sql.DataSource {
public MyDataSource();
public java.io.PrintWriter getLogWriter() throws java.sql.SQLException;
public void setLogWriter(java.io.PrintWriter) throws java.sql.SQLException;
public void setLoginTimeout(int) throws java.sql.SQLException;
public int getLoginTimeout() throws java.sql.SQLException;
public <T extends java/lang/Object> T unwrap(java.lang.Class<T>) throws java.sql.SQLException;
public boolean isWrapperFor(java.lang.Class<?>) throws java.sql.SQLException;
public java.sql.Connection getConnection() throws java.sql.SQLException;
public java.sql.Connection getConnection(java.lang.String, java.lang.String) throws java.sql.SQLException;
}