2011-12-21 48 views
0

我以前從未見過這個錯誤,我也從來沒有使用ArrayList的,我只是使這個代碼,找出它是如何工作的。我主要是想編寫刪除二維數組如果下一個等於它(這與最後兩個元素的情況下),我編譯和在同一臺機器上運行,並且我剛剛更新的Java這樣的方法我正在運行最新版本。我正在使用Linux Ubuntu 11.10。這是代碼:因爲java.lang.UnsupportedClassVersionError與ArrayList的

import java.util.*; 

public class Test{ 
public static void main(String[] args){ 

    float[][] a = {{304.0f, 2743.0f}, 
    {304.0f, 2743.0f}, 
    {304.0f, 2754.0f}, 
    {304.0f, 2754.0f}, 
    {325.0f, 2764.0f}, 
    {346.0f, 2775.0f}, 
    {367.0f, 2775.0f}, 
    {367.0f, 2764.0f}, 
    {367.0f, 2754.0f}, 
    {356.0f, 2723.0f}, 
    {325.0f, 2691.0f}, 
    {304.0f, 2670.0f}, 
    {304.0f, 2639.0f}, 
    {356.0f, 2639.0f}, 
    {377.0f, 2650.0f}, 
    {377.0f, 2650.0f}}; 

    foo(a); 
    for (int i = 0; i < a.length; ++i) 
     System.out.println(a[i]); 

} 

public static float[][] foo(float[][] array){ 

    List<float[]> al = new ArrayList<float[]>(Arrays.asList(array)); 

    for (int i = 0; i < al.size(); ++i) 
     if (al.get(i)[0] == al.get(i+1)[0] && al.get(i)[1] == al.get(i+1)[1]) 
      al.remove(i); 

    float[][] b = new float[al.size()][2]; 

    for (int i = 0; i < al.size(); ++i) 
     b[i] = al.get(i); 

    return b; 
} 
} 

我得到的錯誤是:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Test : Unsupported major.minor version 51.0 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
Could not find the main class: Test. Program will exit. 

,如果你還可以提出一個更簡單的方法來做到這一點,我將非常感激。首先十分感謝!

回答

2

所有這一切都意味着,您的javac.exe版本比你的java.exe版本更新。類文件javac.exe正在生產不能被這個舊的java.exe讀取。人們往往有java.exe某處發瘋似的C:\WINDOWS額外的舊副本,離開了那裏一個被誤導的安裝程序。找到它並刪除它或修復您的PATH,這樣您的較新副本就會首先找到。

+0

我運行Linux操作系統Ubuntu 11.10(抱歉沒有澄清這一點)。我怎麼做? – 2011-12-21 03:54:45

+0

那麼'java'和'javac',那麼,不是'* .exe',但大體上是一樣的想法。輸入'which java'會告訴你從哪裏獲得'java'。一種可能的情況是安裝了'/ usr/bin/java',並且在您剛剛安裝的JDK之前,它就在您的路徑上。修改'〜/ .profile'中的PATH,使得'JDK/bin'首先出現。 – 2011-12-21 04:30:52

+0

我終於做到了,我仍然是一個linux的新手,非常非常感謝! – 2011-12-21 06:51:34

相關問題