novedades for java tomcat tomcat7 java-9

for - Tomcat 7.0.73 no funciona con java 9



tomcat 9 eclipse (5)

No se puede iniciar la aplicación basada en Tomcat con Java 9 debido a la opción predeterminada "java.endorsed.dirs" en catalina.sh.

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

¿Hay una solución para esto?


-Djava.endorsed.dirs = C: / Archivos de programa / Apache Software Foundation / Tomcat 9.0 / endorsed no es compatible. Los estándares aprobados y las API independientes en forma modular serán compatibles a través del concepto de módulos actualizables.

Para solucionar este error, debe instalar / actualizar la Plataforma de herramientas web de Eclipse (WTP) a la versión 3.9.4 o posterior.

Seleccione Ayuda> Instalar nuevo software ... Seleccione o agregue la siguiente URL: http://download.eclipse.org/webtools/repository/oxygen Check Web Tools Platform (WTP) 3.9.4 Seleccione "Siguiente" y siga las instrucciones

Reconfigurar el gato en eclipse.


El problema anterior se solucionó con las versiones posteriores de Eclipse, pero desafortunadamente, apareció nuevamente con el lanzamiento de Java 10. Aquí está mi investigación: Inicialmente, instalé Java 10 y Eclipse Oxygen 3, que me dio el mismo error que mencionó en su pregunta . Pero, en el momento en que instalé Java 9 y apunté a mi servidor de tiempo de ejecución Apache tomcat, el error desapareció.


En mi caso, lo que hice para responder al problema de que Tomcat no se ejecutara fue configurar Tomcat (versión 7) con una versión Java inferior (por ejemplo, Java 8).

Luego, en startup.sh , shutdown.sh y catalina.sh agregué lo siguiente:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`;


Este síntoma puede surgir si tiene un Tomcat Runtime usando un JRE anterior a Java 9 y crea y ejecuta un servidor con ese tiempo de ejecución. Luego edite el Tomcat Runtime para usar Java 9 e intente iniciar el servidor. Lo que sucede es que se agrega un argumento "-Djava.endorsed.dirs" a la configuración de inicio cuando el servidor se ejecutó con el JRE anterior. Cuando se ejecuta el servidor después del cambio a Java 9, el argumento "-Djava.endorsed.dirs" se ve como un argumento de VM agregado por el usuario y se mantiene, lo que da como resultado el error.

La forma más sencilla de arreglarlo es recrear el servidor. También puede hacer clic derecho en el servidor en la vista de servidores y seleccionar Abrir. En la ventana que se abre, haga clic en el enlace "Abrir configuración de inicio" en la parte inferior de la sección General. En el cuadro de diálogo que se abre, cambie a la pestaña Argumentos y en la sección "Argumentos de VM", edite el argumento "-Djava.endorsed.dirs" y haga clic en Aceptar. Debería poder iniciar el servidor ahora.


Tendrás que hackear el script bin/catalina.sh para que esto funcione.

Hay un montón de líneas como esta en bin/catalina.sh :

exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS / -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" / ...

Simplemente elimine la segunda de esas líneas (la que tiene -Djava.endorsed.dirs ) en cada caso y debería volver al negocio.

Estoy buscando mejorar esos scripts para que -Djava.endorsed.dirs no se proporcione a la JVM cuando el valor está vacío (que debería ser el caso si está utilizando Java 9).

ACTUALIZACIÓN 2017-11-06

Parece que r1810284 debería solucionar el problema r1810284 . Espere que esta solución se incluya en Tomcat 7.0.83 (o cualquiera que sea la próxima versión 7.0.x pasa la votación).

ACTUALIZACIÓN 2018-03-07

La primera versión oficial de Apache tomcat 7.0.x que incluye esta solución es Apache Tomcat 7.0.84, votada estable el 24-01-2018.