2011-12-21 2 views
0

Я никогда не видел эту ошибку раньше, я также никогда не использовал массивList раньше, я просто делаю этот код, чтобы узнать, как он работает. Я в основном пытаюсь написать метод, который удаляет элемент 2D-массива, если следующий ему равен (что имеет место с двумя последними элементами). Я компилирую и запускаю на том же компьютере, и я только что обновил 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 (извините за то, что не уточнил это). Как мне это сделать? –

+0

Ну, 'java' и' javac', то, а не '* .exe', но в целом такая же идея. Ввод 'which java' покажет вам, откуда вы получаете' java'. Один из возможных сценариев заключается в том, что установлен '/ usr/bin/java', и он находится на вашем пути до того, как вы только что установили JDK. Измените PATH в '~/.profile', поэтому сначала появится' JDK/bin'. –

+0

Я, наконец, сделал это, я все еще новичок с Linux, спасибо очень много! –

Смежные вопросы