1

据此,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。

有谁知道我错过了什么?

4

2 回答 2

1

检查您的 PATH 环境变量,它似乎指向较旧的 JDK。

您可以使用以下方法检查正在使用的 javac

which javac

您可以使用它的完整路径直接调用新的 JDK,例如

/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

有用的链接:

Ubuntu中的环境变量

永久设置 PATH 值

于 2014-04-16T04:22:47.227 回答
0

听起来您的代码未在 JDK 7 下编译。检查编译器的版本(如 Sotirios 所述)

于 2014-04-16T04:03:09.903 回答