У меня есть такие занятия:
public class EntityDataModel<T extends AbstractEntity>
{
...
}
public abstract class BarChartBean<E extends ChartEntry, T>
{
protected EntityDataModel<? extends T> currentModel;
...
}
Я могу скомпилировать и запустить этот код в eclipse без проблем, но когда я вызываю mvn compile
, выдается эта ошибка:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project edea2: Compilation failure: Compilation failure:
[ERROR] C:\Develop\...\BarChartBean.java:[53,30] error: type argument ? extends T#1 is not within bounds of type-variable T#2
[ERROR] where T#1,T#2 are type-variables:
[ERROR] T#1 extends Object declared in class BarChartBean
[ERROR] T#2 extends AbstractEntity declared in class EntityDataModel
Ошибка довольно очевидна, и, теоретически говоря, javac правильный, а компилятор eclipse неправильный.
Почему такая разница?
Вот подробности об окружающей среде:
Затмение
Maven
- Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T13:57:37+02:00)
- Домашняя страница Maven: C: \ Develop \ tools \ apache-maven-3.3.3
- Версия Java: 1.8.0_71, поставщик: Oracle Corporation
- Домашняя страница Java: C: \ Program Files \ Java \ jdk1.8.0_71 \ jre
- Локаль по умолчанию: it_IT, кодировка платформы: Cp1252
- Название ОС: "windows 10", версия: "10.0", арка: "amd64", семейство: "dos"
плагин компилятора maven:
<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <showDeprecation>true</showDeprecation> <showWarnings>true</showWarnings> </configuration> </plugin>
Вопрос: как я могу согласовать поведение компилятора eclipse с javac (но я не хочу использовать javac в eclipse)?