java.lang.UnsupportedClassVersionError with arraylist - PullRequest
0 голосов
/ 21 декабря 2011

Я никогда не видел эту ошибку раньше, я также никогда не использовал arrayList прежде, я просто делаю этот код, чтобы выяснить, как он работает. В основном я пытаюсь написать метод, который удаляет элемент 2D-массива, если следующий равен ему (как в случае с двумя последними элементами), я компилирую и запускаю на той же машине, и я только что обновил Java, так Я использую последнюю версию. Я использую Linux Ubuntu 11.10. Это код:

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.

также, если вы можете предложить более простой способ сделать это, я был бы очень признателен. Большое спасибо заранее!

1 Ответ

2 голосов
/ 21 декабря 2011

Все это означает, что ваша версия javac.exe новее, чем ваша версия java.exe.Файлы классов, которые javac.exe создает, не могут быть прочитаны этим старым java.exe.Часто у людей есть лишняя старая копия java.exe где-то сумасшедшая, как C:\WINDOWS, оставленная там неверным установщиком.Найдите его и либо удалите, либо исправьте PATH так, чтобы ваша новая копия была найдена первой.

...