Mostrando entradas con la etiqueta jdk8. Mostrar todas las entradas
Mostrando entradas con la etiqueta jdk8. Mostrar todas las entradas

domingo, 12 de enero de 2020

Java: Unsupported major.minor version 52.0

Es común encontrar excepciones en proyectos Java. No importando si el código está "bien escrito", siempre habrá algo que nos causará un disgusto futuro.

Recordar:Una excepción es una anomalía en el flujo normal de un programa. Un error, muchas veces, es un fallo irreparable en la que el desarrollados y/o usuario no les queda otra cosa más que pedir clemencia al Creador de Universo y la solución caiga del mismo cielo.

Uno de las más famosas es el NullPointerException, pero en está ocasión lo que nos trae ahora es el Error  Unsupported major.minor version 52.0

¿Por qué ocurre este error?
Parece ser que es porque una clase fue compilada en una versión de JDK específica y se quiere ejecutar en Otra  Versión de JDK. La clase java.lang.UnsupportedClassVersionError nos lanza este error.


Ejemplo. Compilas tu programa en JDK 5 y tratas de ejecutarlo con un JDK 4.

La siguiente tabla nos puede aclarar un poco las cosas.

Tabla

//Tabla de versiones y número correspondiente
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

La versión 52 corresponde al JDK 8. Lo que quiere decir que...


¡COMPILAMOS EL CÓDIGO EN UN JDK 8 Y TRATAMOS DE EJECUTARLO EN UN JDK MENOR!

Posibles soluciones, si es que usas Eclipse, son:

1. Project -> Properties -> Java Compiler Enable -> Compiler compliance level to 1.7, 1.6, 1.5 ...

2. Window -> Preferences -> Java ->  Compiler ->Compiler compliance level to 1.7, 1.6, 1.5 ...

3. Revisar que el JDK y el JRE sean la versión 8.

Links:
https://javarevisited.blogspot.com/2015/05/fixing-unsupported-majorminor-version.html






domingo, 15 de mayo de 2016

Conociendo Java 8

Dicen que con los cambios vienen cosas mejores.  Esperemos que sea así. Java 8 nos trae nuevas características. Una de ellas son: las Lambdas. ¿Qué son las lambdas? ¿Para qué nos sirven?.  Las lambdas son un tipo de función. Es una función "anónima", es decir, que no está vinculada un nombre.

En lenguajes como Python tenemos algo como esto:

switch=[
    lambda n: 'Hola',
    lambda n: 'Que tengas un buen dia' if n == 1 else 'Tal vez no tengas un buen dia',
    lambda n: 'Hoy es un buen dia para empezar' if n == 2 else 'Tal vez otro dia puedas empezar',
]

opcion=raw_input('Introduce un numero ente 1 y 2:')
print switch[0](opcion)
print switch[1](opcion)


En Java 8 tenemos "las expresiones Lambda". Que se puede definir como un "nuevo estilo" o manera de programar usando Lambdas.

En el sitio oficial de Oracle tenemos esta explicación:
"They provide a clear and concise way to represent one method interface using an expression. Lambda expressions also improve the Collection libraries making it easier to iterate through, filter, and extract data from a Collection. In addition, new concurrency features improve performance in multicore environments."

Podemos escribir algo como esto:

Clase instancia = () -> hacerAlgo();

La función puede o no contener parámetros. Además no es necesario definir qué tipo de dato es (String, int, double, boolean, char).

Clase instancia = (String a) -> hacerAlgo(a);  

Ejercicio. Crearemos una interface "Servicio" que contenga un método llamado opera, elcual recibe dos parámetros a y b. Una clase principal con un método llamado "operacion"que recibirá tres parámetros,las variables a,b y una instancia de tipo Servicio. La operación a realizar es la suma.

import static java.lang.System.out;

public class Control{
    public static void main(String[] args) {
        Servicio s=(a,b) -> a-b;
         out.println("35 - 26 = " + new Control().operacion(35, 26, s));
    }

    private int operacion(int a,int b, Servicio servicio){
        return servicio.opera(a,b);
    }
}

interface Servicio{
    int opera(int a,int b);
}


El resultado será 35 - 26 = 9.


Links
http://viralpatel.net/blogs/lambda-expressions-java-tutorial/
http://stackoverflow.com/questions/16501/what-is-a-lambda-function

Jai un lenguaje de programación inspirado en C++

Hoy hablaremos de un nuevo lenguaje de programación llamado Jai . Se trata de un lenguaje de programación que está desarrolland...

Etiquetas

Archivo del blog