domingo, 27 de mayo de 2018

Java 10 & Eclipse. Algunos problemas

0. Introducción


Aún no controlo Java 9 y nos endiñan Java 10...

Pero la buena noticia es que los cambios acaecidos de cara al programado parecen ser mas de una pequeña revisión que de una versión.

Por tanto me voy a arriesgar a utilizar Java 10

1. Instalación

Voy a seguir las instrucciones de insalación en Ubuntu de Wesam en StackOverflow.

1. Descargar el OpenJDK 10 para Linux.

2. Extraer el archivo


tar xzvf openjdk-10_linux-x64_bin.tar.gz

3. Mover los ficheros a donde se encuentren los otros JDK del sistema, por ejemplo yo los tengo en /home/myUser/MyPrograms (siendo myUser el usuario que entro en el sistema)

4. Añadir la nueva alternativa de Java


sudo update-alternatives --install /usr/bin/java java /home/myUser/MyPrograms/jdk-10.0.1/bin/java 1

sudo update-alternatives --install /usr/bin/javac javac /home/myUser/MyPrograms/jdk-10.0.1/bin/javac 1

5. Actualizar las alternativas Java del Sistema y seleccionar JDK10


sudo update-alternatives --config java

Y seleccionar la opción de JDK 10


There are 4 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java           1091      auto mode
  1            /home/eduard/MyPrograms/jdk-10.0.1/bin/java   1         manual mode
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java       1081      manual mode
  3            /usr/lib/jvm/java-9-openjdk-amd64/bin/java    1091      manual mode
* 4            /usr/lib/jvm/java-9-oracle/bin/java           1091      manual mode

Press <enter> to keep the current choice[*], or type selection number: 1

Lo mismo para el javac


sudo update-alternatives --config javac
There are 4 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                          Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/javac           1091      auto mode
  1            /home/eduard/MyPrograms/jdk-10.0.1/bin/javac   1         manual mode
  2            /usr/lib/jvm/java-8-oracle/bin/javac           1081      manual mode
  3            /usr/lib/jvm/java-9-openjdk-amd64/bin/javac    1091      manual mode
* 4            /usr/lib/jvm/java-9-oracle/bin/javac           1091      manual mode

Press <enter> to keep the current choice[*], or type selection number: 1


6. Verificar la instalación

Para el java

$ java --version
openjdk 10.0.1 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10)
OpenJDK 64-Bit Server VM (build 10.0.1+10, mixed mode)

y para el javac


$ javac --version
javac 10.0.1

2. Problemas surgidos en Eclipse

Es muy difícil que salga todo bien a la primera. Veamos algunos problemas

ERROR 1. Hay que ver que la configuración de los Servers apunten al JRE correcto. Si no puede dar problemas.

ERROR 2. cuando se ejecuta una página xhtml (Run - Run As - Run on Server) aparece este error.


Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
-Djava.endorsed.dirs=/home/eduard/ProgramesMeus/apache-tomcat-9.0.8/endorsed is not supported. Endorsed standards and standalone APIs
in modular form will be supported via the concept of upgradeable modules.

Solución : Parece ser que las versiones Java 9 y superiores no admiten la variable de entorno -"Djava.endorsed.dirs". Veamos los pasos para solucionar el tema

a) Solución correcta: 
Según Alexander Bering en StackOverflow debemos actualizar la versión de eclipse Oxigen WTP, para ello:
   * Seleccionar "Help> Install new Software.."
   * Añadir la siguiente URL: http://download.eclipse.org/webtools/repository/oxygen
   * Escoger Web Tools Platform (WTP) 3.9.4
   * Seleccionar "Next" y seguir las instrucciones
  

b) Solución que falla mas que una escopeta de feria:
bº) hay que detener el servidor mediante el boton rojo cuadrado de la consola.
b2) a continuación hay que ejecuar la página xhtml como (Run - Run As - Run Configurations)
cb3 Eliminar las variables de entorno que indican el -Djava.endorsed.dirs que se ve en la figura.



 Y ya debe de funcionar.

GitHub (5): Eclipse. Deshacer cambios en el repositorio local y dejarlo tal como está el remoto

1. Usando Eclipse


Si hemos hecho pruebas que no nos convencen siempre podemos reverter los cambios.

Para ello nos situamos sobre el proyecto y con el botón derecho, elegimos Team - Reset

A continuación elegimos la rama remota (comprobando que esta tiene la última revisión deseada) y al tipo de reset elegimos Hard


Le damos al botón Reset y nos devuelve el proyecto al estado original. Que es lo que queríamos

2. (Sin Eclipse) Usando git con la línea de comandos

Una vez puestos prefiero utilizar Eclipse, pero contra gustos ya se sabe..

Si queremos hacerlo en la linea de comandos (sin utilizar Eclipse) , tal como nos indica CamperBoot de FreeCodeCamp:


1
2
3
4
5
6
7
8
9
#To overwrite your local files do:

git fetch --all
git reset --hard <remote>/<branch_name>

#For example:

git fetch --all
git reset --hard origin/master