2014-04-16 29 views
1

根據java -version這是我的Ubuntu的Java環境是這樣的:Java 7個的功能不工作與Java版本的Ubuntu 「1.7.0_51」

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標記。

有人知道我失蹤了嗎?

+2

現在做'javac的-version'。 –

+1

另外,它是'useDelimiter'。 –

+0

你是從任何IDE運行它還是直接用javac編譯? –

回答

0

聽起來像是你的代碼是不是下JDK 7,檢查編譯你的編譯器的版本(如索蒂里奧斯提到)

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

相關鏈接:

Environment variables in Ubuntu

Setting a PATH value permanently

+0

真棒。我只是使用'update-alternatives'命令來選擇運行哪個版本的'javac'並運行。 :D你在這裏發佈的內容非常有幫助。我將不得不考慮修改我的$ PATH變量。感謝您解決這個複雜的問題。我也忘記了'which'命令。這裏很棒的東西。謝謝@lex –