根据java -version
,这就是我的Ubuntu Java环境:
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.12.04.2)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
我的javac -version
是:
javac 1.6.0_30
如何更改我的javac版本?感谢@SotiriosDelimanolis提示。 ;)(如果您正在阅读此内容并遇到相同的问题,请阅读评论。我链接到描述如何在ubuntu上执行此操作的页面。)
我正在尝试运行以下程序:
import java.util.*;
class Separate {
public static void main(String[] args) {
String text = "<head>first program</head> <body>hello world</body>";
Set<String> words = new TreeSet<>(); //1 Compiler error
try(Scanner tokenizingScanner = new Scanner(text)) { //2 Compiler Error
tokenizingScanner.useDelimeter("\\W");
while(tokenizingScanner.hasNext()) {
String word = tokenizingScanner.next();
if(!word.trim().equals("")) {
words.add(word);
}
} //end while
} //end try
for(String word: words) {
System.out.print(word + " ");
} //end for
}
我在尝试编译时收到这些错误:
Separate.java:8: illegal start of type
Set<String> words = new TreeSet<>();
^
Separate.java:9: '{' expected
try(Scanner tokenizingScanner = new Scanner(text)) {
^
Separate.java:9: ')' expected
try(Scanner tokenizingScanner = new Scanner(text)) {
^
Separate.java:9: ';' expected
try(Scanner tokenizingScanner = new Scanner(text)) {
^
Separate.java:9: 'try' without 'catch' or 'finally'
try(Scanner tokenizingScanner = new Scanner(text)) {
^
Separate.java:24: reached end of file while parsing
}
^
6 errors
这些错误似乎不应该是错误。第一个错误表明在Java 7中找到的菱形表示法不是正确的语法或正确的东西。此错误在注释中显示为1。
try块中创建Scanner对象产生的其他错误是尝试使用也是Java 7功能的资源。此行在源代码中标有2以上。
有谁知道我错过了什么?
答案 0 :(得分:1)
检查您的PATH环境变量,看起来它指向较旧的JDK。
您可以使用
查看正在使用的javacwhich javac
您可以使用它的完整路径直接调用新的JDK e.g。
/usr/java/jdk1.7.0_51/bin/javac
但是如果要在任何地方调用javac,则必须将PATH环境变量更改为指向较新的JDK。
如何修改PATH取决于您的设置。您必须从PATH中删除指向JDK1.6的旧路径并添加指向JDK1.7的新路径
示例:
如果
which javac
产生
/usr/java/jdk1.6.0_30/bin/javac
然后你的路径看起来像这样,请注意jdk1.6.0_30
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/java/jdk1.6.0_30/bin
将其更改为正确的路径(jdk1.7.0_51)
PATH=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/java/jdk1.7.0_51/bin
有用的链接:
答案 1 :(得分:0)
听起来您的代码未在JDK 7下编译。检查编译器的版本(如Sotirios所述)