Tomcat 7.0.73 non funziona con Java 9




tomcat7 java-9 (4)

Impossibile avviare l'app basata su tomcat con java 9 a causa dell'opzione predefinita "java.endorsed.dirs" in 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.

C'è un lavoro in giro per questo?


-Djava.endorsed.dirs = C: \ Programmi \ Apache Software Foundation \ Tomcat 9.0 \ endorsed non è supportato. Gli standard approvati e le API autonome in forma modulare saranno supportate tramite il concetto di moduli aggiornabili.

Per correggere questo errore, è necessario installare / aggiornare la piattaforma Eclipse Web Tools (WTP) alla versione 3.9.4 o successiva.

Seleziona Guida> Installa nuovo software ... Seleziona o aggiungi il seguente URL: http://download.eclipse.org/webtools/repository/oxygen Controlla la piattaforma di strumenti Web (WTP) 3.9.4 Seleziona "Avanti" e segui le istruzioni

Riconfigurare il tomcat in eclipse.


Dovrai hackerare lo script bin/catalina.sh per farlo funzionare.

Ci sono un sacco di righe come questa in bin/catalina.sh :

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

Basta rimuovere la seconda di quelle righe (quella con -Djava.endorsed.dirs ) in ogni caso e dovresti essere di nuovo in affari.

Sto cercando di migliorare quegli script in modo che -Djava.endorsed.dirs non sia fornito alla JVM quando il valore è vuoto (che dovrebbe essere il caso se stai usando Java 9).

AGGIORNAMENTO 2017-11-06

Sembra che r1810284 dovrebbe risolvere il problema r1810284 . Aspettatevi che questa correzione sia inclusa in Tomcat 7.0.83 (o qualunque sia la prossima versione 7.0.x che passa il voto).

AGGIORNAMENTO 2018-03-07

La prima versione ufficiale di Apache tomcat 7.0.x che include questa correzione è Apache Tomcat 7.0.84, votata stabile il 24/01/2018.


Nel mio caso, ciò che ho fatto per rispondere al problema di Tomcat non in esecuzione era impostare Tomcat (versione 7) con una versione Java inferiore (ad esempio Java 8).

Quindi, in startup.sh , shutdown.sh e catalina.sh ho aggiunto quanto segue:

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

Questo sintomo può verificarsi se si dispone di un Tomcat Runtime che utilizza un JRE precedente a Java 9 e di creare ed eseguire un server con quel runtime. Quindi modificare Tomcat Runtime per utilizzare Java 9 e provare ad avviare il server. Quello che succede è che un argomento "-Djava.endorsed.dirs" viene aggiunto alla configurazione di avvio quando il server è stato eseguito con il JRE precedente. Quando si esegue il server dopo il passaggio a Java 9, l'argomento "-Djava.endorsed.dirs" viene visto come un argomento VM aggiunto dall'utente e mantenuto, causando l'errore.

Il modo più semplice per risolvere è ricreare il server. Puoi anche fare clic con il pulsante destro del mouse sul server nella vista server e selezionare Apri. Nella finestra che si apre, fai clic sul link "Apri configurazione di avvio" nella parte inferiore della sezione Generale. Nella finestra di dialogo che si apre, passa alla scheda Argomenti e nella sezione "Argomenti VM", modifica l'argomento "-Djava.endorsed.dirs" e fai clic su OK. Ora dovresti essere in grado di avviare il server.







java-9