Como alterar a versão do Java usada pelo TOMCAT?
Pergunta
Tenho Java 1.6 e Tomcat 5.5 instalados em meu sistema.
Mas o Tomcat 5.5 acessa o Java 1.5 e, portanto, como resultado, recebo o erro Bad version number in .class file
ao executar código java com JSP.
Como posso alterar a versão do Tomcat para Java 1.6?
ATUALIZAR
Tentei mudar a JVM que o tomcat5w.exe está apontando para a versão 1.6 e agora estou fora do Bad version in .class file
erro.Mas agora recebo o seguinte erro.
exception
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:498)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
root cause
java.lang.NullPointerException
myfirst.SearchLink.checkURL(SearchLink.java:20)
org.apache.jsp.Test_jsp._jspService(Test_jsp.java:52)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
Qual pode ser a causa raiz?
Solução
Ao abrir catalina.sh / catalina.bat, você pode ver:
Pré-requisitos de variáveis de ambiente
JAVA_HOME Deve apontar para a instalação do Java Development Kit.
Então, defina sua variável de ambiente JAVA_HOME
para apontar para Java 6.Certifique-se também JRE_HOME
está apontando para o mesmo alvo, se estiver definido.
Atualizar:já que você está no Windows, Veja aqui sobre como gerenciar suas variáveis de ambiente
Outras dicas
Você pode alterar o local JDK ou JRE usando as seguintes etapas:
- abra o terminal ou cmd.
- vou ao
[tomcat-home]\bin
diretório.
ex:c:\tomcat8\bin
- Escreva o seguinte comando:
Tomcat8W //ES//Tomcat8
- abrirá diálogo, selecione o Guia Java (painel superior).
- Altere o valor da máquina virtual Java.
- clique OK.
Nota:em Apache Tomee mesmos passos, mas etapa 3) O comando deve ser: TomEE //ES
No Eclipse, é muito fácil apontar o Tomcat para uma nova JVM (neste exemplo JRE6). Meu problema era que eu não conseguia encontrar onde fazer isso. Aqui está o truque:
- No menu superior do Eclipse ARQUIVO aba para baixo, selecione NOVO, -->Outro
- ...no Novo servidor: selecione um assistente Janela, selecione: Servidor-> Servidor... clique PRÓXIMO
- . no Novo servidor: defina um novo servidor Janela, selecione Apache> TomCat 7 Server
- .. agora clique na linha em azul e sublinhado, intitulado: Configure ambientes de tempo de execução
- no Ambientes de tempo de execução do servidor janela,
- ..Select Apache, expanda -o (clique na seta para a esquerda), selecione Tomcat v7.0, e clique EDITAR.
- você verá uma janela chamada EDITIVE AMBIENTE DE RUNDO DO SERVER: TomCat Server
- Nesta tela, há um pulldown rotulado Jres.
- Você deve encontrar seu JRE listado como JRE1.6.0.33. Se não usar o JRE instalado botão.
- Selecione o JRE desejado. Clique no FINALIZAR botão.
- Sair graciosamente, no Servidor: Ambientes de tempo de execução do servidor Janela, clique OK
- no Novo servidor: defina um novo servidor Janela, pressione PRÓXIMO
- no Novo servidor: adicione e remova Janela, selecione aplicativos e instale -os no servidor.
- no Novo servidor: adicione e remova Janela, clique Terminar
Isso é tudo. Interessante, apenas as etapas 7-10 parecem importar e eles mudarão o JRE usado em todos os servidores que você definiu anteriormente para usar o TomCat v7.0. O restante das etapas é apenas porque não consigo encontrar outra maneira de chegar à tela, exceto definindo um novo servidor. Alguém mais sabe de uma maneira mais fácil?
Se você usar os scripts padrão para iniciar o TomCat (ou seja, você não instalou o TomCat como um serviço do Windows), você pode usar o arquivo setenv.bat, para definir sua versão JRE_HOME.
No Windows, crie o arquivo
%CATALINA_BASE%\bin\setenv.bat
, com conteúdo:
set "JRE_HOME=%ProgramFiles%\Java\jre1.6.0_20"
exit /b 0
E deve ser isso.
Você pode testar isso usando %catalina_base % bin configtest.bat (isenção de responsabilidade: eu só verifiquei isso com uma instalação do TomCat7).
Leitura adicional:
- http://tomcat.apache.org/tomcat-5.5-doc/running.txt - Seção: 'Configuração avançada - várias instâncias do tomcat'
- http://tomcat.apache.org/tomcat-7.0-doc/running.txt - Seção: '(3.4) Usando o "Setenv" Script (opcional, recomendado)'
No Linux, o TomCat7 possui um arquivo de configuração localizado em:
/etc/sysconfig/tomcat7
... que é onde as configurações específicas do servidor devem ser feitas. Você pode definir a variável Java_Home Env aqui sem precisar criar um perfil.d/ script.
Isso funcionou para mim.
Existem várias boas respostas aqui, mas eu queria adicionar uma, pois pode ser útil para usuários como eu que têm o Tomcat instalado como um serviço em uma máquina Windows.
Opção 3 aqui: http://www.codejava.net/servers/tomcat/4-ways-to-change-jre-for-tomcat
Basicamente, abra Tomcatw.exe e Point Tomcat para a versão da JVM que você precisa usar e reinicie o serviço. Verifique se seus aplicativos implantados ainda funcionam também.
Teste Abra o termonal ou CMD. Vá para o diretório [Tomcat-Home] bin. Ex: C: tomcat8 bin Escreva o seguinte comando: tomcat8w // es // tomcat8 abrirá a caixa de diálogo, selecione o java tap (top top). Altere o valor da máquina virtual Java.