【发布时间】:2013-02-07 15:53:03
【问题描述】:
希望这不是重复的,我已经搜索并发现了一些相关问题,但与 Java 中的差异无关。
private List<Stuff> apps = new ArrayList<Stuff>();
// compiles under both
private List<Stuff> apps = new ArrayList<>();
// compiles under OpenJDK 7
// SunJDK 7 Error raised is : Syntax error on token "<", ? expected after this token
任何想法为什么会这样?我喜欢在我的 *nix 服务器和开发盒上使用 OpenJDK,但有时我会使用别人的 Windows 笔记本电脑进行开发和测试,这是我第一次在两个版本之间遇到问题。希望有任何建议或想法!
我还使用 Netbeans 7.2(它不会在 Windows 或 Debain 上标记错误)。该程序使用 Play Framework 1.2.5,并将 java 源设置为 1.7。
javac -version
javac 1.7.0_01
和
java -version
java version "1.7.0_01"
Java<TM> SE Runtime-Environment <build 1.7.0_01-b08>
并在所有我能告诉的地方检查了 Netbeans 的来源是 1.7。通过命令行编译产生了与上述相同的错误。
回答?
我已更新到最新版本的 SunJDK/Java (1.7.0_13),问题已为我解决。
【问题讨论】:
-
它对我来说很好用。你在使用 Eclipse 吗?确保它没有完成在 Project/Build 设置中更改 Java 库或将“编译为”版本更改为 5 的魔术。我有一个令人讨厌的习惯,就是经常自己做这些事情!
-
同意 Spoon 先生的观点。在我的机器上工作。如果您使用 maven,请确保构建部分的 targetVersion 设置正确:maven.apache.org/plugins/maven-compiler-plugin/examples/…
-
对不起,我使用 Netbeans,它也有在 Windows 上切换回源 1.5 而不是 1.7 的习惯,在 Debian 上从不这样做。我修改了我的回答,说 Netbeans,如果这很重要的话。
-
请编辑您的问题并添加
javac -version和java -version的输出,以及IDE 中的编译器设置。即使在使用 Java 1.7 时,您也可以通过包含-source 1.6来强制它以 1.6 模式编译。因此,如果您的 IDE 将此设置添加到您的构建中,它将在 Java 1.7 中失败哦,并且尝试在命令行上编译以查看它是 Java 还是 Netbeans 问题! -
谢谢。我添加了请求的信息。
标签: java playframework-1.x openjdk