我在maven包装时遇到问题。在这段代码中:
public class LoginDialog extends Dialog {
private final TextField<String> customer;
^here
private final TextField<String> login1;
private final TextField<String> password1;
private final MainController controller= new MainController();
private String customerId;
private String login;
private String password;
我有一个错误:
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
...src/main/java/com/messagedna/web/client/widget/LoginDialog.java:[19,27] error: generics are not supported in -source 1.3
这可能是什么原因?
答案 0 :(得分:9)
在Java 1.5中添加了泛型。你的maven正在编译java 1.3。
这可以通过两种方式之一修复。
删除泛型,以便您可以编译&lt; 1.5
更改maven配置以针对较新版本的java进行编译。您应该能够在pom中编辑编译器插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
这告诉maven编译为1.5
答案 1 :(得分:3)
您需要告诉maven编译器插件您的代码使用的是最近的java版本。例如,如果您使用的是Java 7,请执行以下操作:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
答案 2 :(得分:1)
使用-source 1.3
编译代码时,编译器不支持在JDK 1.3之后引入的断言,泛型或其他语言功能。
答案 3 :(得分:0)
您需要更改设置,以便将源设置为1.5+或从代码中删除泛型:
private final TextField customer;
答案 4 :(得分:0)
泛型仅作为Java 5中的一个特性引入,因此在使用3进行编译时,不允许使用泛型。如果您想了解有关泛型的更多信息,请查看here。因此,您需要使用5或更高版本进行编译或停止使用泛型。
答案 5 :(得分:0)
Android Studio:通过在文件应用build.gradle中添加以下几行来修复
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
注意:使用最新的Java版本,这里我使用的是Java 8
答案 6 :(得分:0)
如果您不使用maven并在Intellij编辑器中遇到类似问题,则可能值得检查“项目设置”。 即使定义了正确的JDK,也可以更改“项目语言级别”,并且可以配置5以上。