Jsp funciona local mas na web não, mesmo codigo

13 respostas
M

olá pessoal
tenho um pagina jsp bem simples, que apenas imprime “alo mundo”
quando rodo localhost funciona
quando roda no meu servidor, roda 100 %
dae outra classe, que eu uso para chamar um relatorio .jasper e abrir ele via pdf
local funciona
na web não

na web da o seguinte erro

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Cannot allocate servlet instance for path /web/servlet/ExecutaRelatorio
	org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:389)
	org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:134)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
	java.security.AccessController.doPrivileged(Native Method)
	javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
	org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
	org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)

root cause

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRException
	java.lang.Class.getDeclaredConstructors0(Native Method)
	java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
	java.lang.Class.getConstructor0(Class.java:2699)
	java.lang.Class.newInstance0(Class.java:326)
	java.lang.Class.newInstance(Class.java:308)
	org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:370)
	org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:134)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
	java.security.AccessController.doPrivileged(Native Method)
	javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
	org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
	org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)

root cause

java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JRException
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1362)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208)
	java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	java.lang.Class.getDeclaredConstructors0(Native Method)
	java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
	java.lang.Class.getConstructor0(Class.java:2699)
	java.lang.Class.newInstance0(Class.java:326)
	java.lang.Class.newInstance(Class.java:308)
	org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:370)
	org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:134)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
	java.security.AccessController.doPrivileged(Native Method)
	javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
	org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
	org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5 logs.
Apache Tomcat/5.5

parece que ele não esta encontrando o jar do ireport
mas a estrutura que testo localhost é a mesma do servidor
e os arquivos estão atualizados, sem erros

o que pode ser

obrigado

13 Respostas

Vmaia

Olá,

… de uma olha se realmente o .war tem os jars na pasta lib.
Pois, pode ser que a IDE não esteja colocando os jars necessários na pasta lib.

M

sim
na pasta lib estao todos os jars …
agora .war ???
quando rodei local nao mexi em nenhum .war

Vmaia

marcoscorso:
sim
na pasta lib estao todos os jars …
agora .war ???
quando rodei local nao mexi em nenhum .war

Bom … quando vc joga no servidor web … vc envia o pacote .war ou alguma outra coisa ?

SE for o war, pode ser que quando o war é gerado, esteja faltando algumas libs.

M

ai que esta
não mexo com nenhum war
nem sei da existencia desse arquivo
nunca ouvi falar dele

o que é esse arquivo, para que serve, como funciona ?
obrigado

Vmaia

marcoscorso:
ai que esta
não mexo com nenhum war
nem sei da existencia desse arquivo
nunca ouvi falar dele

o que é esse arquivo, para que serve, como funciona ?
obrigado

Na verdade é um pacote java web, ao inves de jar ele é war.

Como vc disponibiliza o aplicativo na web, vc pega e joga uma pasta… gera algum pacote e deploya no servidor … como vc faz ?

M

eu apenas mando todos os arquivo ( class, jasper, jar, … ) via ftp para o site e rodo ele …

Vmaia

tudo o que tem no ambiente local tem no servidor ? … as libs são as mesmas? …

M

sim
eu deleto a pasta e depois mando toda ela
pasta \webapps\curso por exemplo, mando a pasta curso
vai a web-inf, o web.xml, a pasta classes e a lib
é a mesma pasta que eu rodo local

Vmaia

o jar do jasperrepot está na lib do servidor? Pois o erro acusado é que a classe não net.sf.jasperreports.engine.JRException não foi encontrada, por isso acho que o jar não está no servidor, ou então por algum motivo o servidor não está reconhecendo o jar, tente reestartar o servidor, ou deployar todo o pacote novamente. Porque isso esta muito estranho mesmo.

M

olá
não mexi nos jar
apenas criei outro programa semelhante
e novamente o mesmo erro
local funciona
na web não
segue erro

java.lang.StringIndexOutOfBoundsException: String index out of range: -2
	java.lang.String.substring(String.java:1937)
	classe.Codigo_barra.<init>(Codigo_barra.java:115)
	classe.Boleto.processRequest(Boleto.java:108)
	classe.Boleto.doGet(Boleto.java:195)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	sun.reflect.GeneratedMethodAccessor87.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
	java.security.AccessController.doPrivileged(Native Method)
	javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
	org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
	org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)

engraçado que aparece erro de string, mas local, apontando para a mesma base de dados, mesmos fontes, tudo igualzinho …

F
classe.Codigo_barra.<init>(Codigo_barra.java:115)

Na linha 115 da sua classe Codigo_barra.java, você está tentando acessar pegar um pedaço de String usando um índice inválido.
Posta o código do Codigo_barra.java que dará para explicar melhor.

M

mas e porque que local funciona ?
só da esse erro na web …
se fosse erro de programação teoricamente daria erro local
fiz um erro bobo e dae local apareceu
mas esse só na web
em todo caso segue o fonte

BigDecimal valor100 = new BigDecimal(100.00);
BigDecimal valor1 = new BigDecimal(35.00); ;
valor1  = valor1.multiply(valor100) ;		 
String bigtostring = valor1.toString();
int tamanhovalor =   bigtostring.length();
tamanhovalor =  (tamanhovalor  -  3 ) ;		 
String esse =  bigtostring.substring(0,tamanhovalor );
int preenchidos1 = esse.length();
int preencher1 = 10 - preenchidos1;

String preenche_zero1 = "" ;
for ( int i1 = 0 ; i1 < preencher1 ; i1++ ) {
     preenche_zero1 += "0" ;
}
 		
String correto1 = preenche_zero1 + esse;
F

Este trecho de código não contém erros.
Mas o log q vc mostrou dizia:

java.lang.StringIndexOutOfBoundsException: String index out of range: -2  
     java.lang.String.substring(String.java:1937)  
     classe.Codigo_barra.<init>(Codigo_barra.java:115)  
...

Indicando erro na linha 115 do Codigo_barra.

Supondo que o trecho que você enviou contenha a linha 115 do seu arquivo .java, e como você disse que localmente funciona e no servidor dá erro, então provavelmente você está com duas versões diferentes. Uma rodando no servidor e uma local.

Como você disse que faz deploy jogando o que tem diretamente no servidor, pode ser necessário:

  • reiniciar o servidor de aplicação (só o container)
    ou
  • apagar a pasta work, cache, … este tipo de coisa
    Vc chegou a fazer isto?
Criado 20 de maio de 2010
Ultima resposta 25 de mai. de 2010
Respostas 13
Participantes 3