Спасибо всем за ваши быстрые ответы. Было очень полезно понять, что Eclipse использует другой компилятор, который многое объяснил.
Что касается моей проблемы - я предположил, что компилятор Java верен и что сборка действительно имела ошибки. При ближайшем рассмотрении выяснилось, что это несовместимость более старой версии Apache Commons DBCP с Java 1.6. Я был уверен, что использовал последнюю версию и обратился к неверной версии документации, в которой говорилось, что необходимые методы были реализованы.
Теперь что касается Eclipse. Ошибка на самом деле сложно. Мне удалось написать тестовый пример, показывающий эту ошибку. Я использую Java 1.6 и Eclipse Helios для Java EE. Я создал проект Java в Eclipse и добавил
com.springsource.org.apache.commons.pool-1.5.3.jar
com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
в classpath (загрузил эти JAR-файлы из репозитория SpringSource). Как видите, Apache Commons DBCP - старый. Java 1.6 требует версии 1.4 +.
В моем тестовом проекте я расширяю org.apache.commons.dbcp.BasicDataSource и дополнительно заявляю, что он должен реализовывать javax.sql.DataSource. Как это:
import org.apache.commons.dbcp.BasicDataSource;
import javax.sql.DataSource;
public class MyDataSource extends BasicDataSource implements DataSource {
}
Сложность в том, что BasicDataSource реализует интерфейс DataSource. Но в версии 1.6 этот интерфейс получил расширение, поэтому новые методы не реализованы. Добавление «реализует DataSource» снова явно должно вызвать и ошибку, о которой Java-компилятор успешно сообщает. Но Eclipse компилирует этот код без предупреждения, и он даже запускается.
Так вот в чем проблема. Для меня это похоже на ошибку в Eclipse.