O interessante é que consigo executar minha palicação normalmente através do eclipse. Esse erro só acontece com o JAR executável. Para gerá-lo eu fui em Export->Java->Runnable JAR file.
O que tem nesse linha:Line 15 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
N
novato25
Bom, acho que meu applicationContext.xml não está errado, mesmo porque funciona no eclipse:
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:lang="http://www.springframework.org/schema/lang"xmlns:util="http://www.springframework.org/schema/util"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:jee="http://www.springframework.org/schema/jee"xmlns:task="http://www.springframework.org/schema/task"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"><beanid="placeholderConfig"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><propertyname="location"value="arquivo.properties"/></bean><task:annotation-driven/><!-- ========================= Data Source DEFINITIONS ========================= --><beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"><propertyname="driverClassName"value="oracle.jdbc.OracleDriver"/><propertyname="url"value="${CONEXAO}"/><propertyname="username"value="${USER}"/><propertyname="password"value="${PASS}"/><propertyname="accessToUnderlyingConnectionAllowed"value="true"/><!-- Added below properties to deal with connection timeout (to db) when pollService hasnt been used for a long time --><!-- Max number of connections that can remain idle in pool, without extra conns being released --><propertyname="maxIdle"value="2"/><!-- Max number of active connections in the pool --><propertyname="maxActive"value="${CONEXOES_ATIVAS_POOL}"/><!-- In milliseconds - wait no longer for a connection to be returned (when no conns available in pool) --><propertyname="maxWait"value="10000"/><!-- Validation Query to be used to validate connections from pool --><propertyname="validationQuery"value="select 1 from dual"/><!-- Validate objects before being returned to pool (true/false) --><propertyname="testOnBorrow"value="true"/><!-- Below methods are deprecated in Commons DBCP 1.3 (should be removed from here?) --><propertyname="removeAbandoned"value="true"/><propertyname="removeAbandonedTimeout"value="30"/><propertyname="logAbandoned"value="true"/></bean><!-- Habilita suporte a annotations para componentes --><context:annotation-config/><!-- Pacote base para scanear componentes anotados --><context:component-scanbase-package="br.gov.exemplo"/><beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><propertyname="dataSource"ref="dataSource"/></bean><tx:annotation-driventransaction-manager="transactionManager"/><beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"scope="prototype"><constructor-argref="dataSource"/></bean><beanid="simpleJdbcCall"class="org.springframework.jdbc.core.simple.SimpleJdbcCall"scope="prototype"><constructor-argref="dataSource"/></bean><beanid="mailSender"class="org.springframework.mail.javamail.JavaMailSenderImpl"scope="prototype"><propertyname="host"value="${servidor_email_host}"/><propertyname="port"value="${servidor_email_smtp_por}"/><propertyname="defaultEncoding"value="${servidor_email_mime_charset}"/></bean></beans>
:roll:
R
romarcio
O problema parece ser aqui:http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
Tira essa linha e mais a linha:xmlns:jee="http://www.springframework.org/schema/jee"
E testa sem elas.
N
novato25
Bom, eu já havia retirado, mas o erro sempre ocorre, agora com a linha a cima. Já tirei todas deixando apenas o xsd do beans, mas não rola.
Carinha, uma pergunta: você está exportando o jar e daí está executando o jar dentro do mesmo ambiente e sistema operacional, ou está executando ele em outro lugar?
Já tive um problema, há muuuuuuuito tempo atrás, que estou puxando da memória, que o jasper reports não estava renderizando um relatório no servidor web, porque o servidor tinha problemas de permissão, e tinha mais uns problemas de configuração, que não me lembro… O problema é que o servidor tentava acessar a URL do XSD externa explicitamente e havia um bloqueio do firewall…
Uma possibilidade horrorível é ao invés de usar o XSD original, é colocar uma cópia dele em algum lugar que seja acessível ao servidor em questão e mudar a URL do XSD para este novo local.
o JAR é executado na mesma máquina que está o eclipse. Inclusive tenho um projeto MAVEN com as mesma configurações do Spring e o JAR que ele gera executa normalmente. Não sei qual a mágica que o MAVEN faz. O problema é que estou mexendo num sistema legado que não é um projeto MAVEN e estou atualizando a versão do Spring que estava ainda na versão 1. Removi a lib da versão antiga do Spring e coloquei as libs da versão nova (3.0.4). Preciso desta atualização porque preciso implementar uma funcionalidade nova e a versão nova do Spring me ajudaria muito (envio de e-mail e agendamento de tarefas). A nível de teste, criei um projeto apenas carregando o contexto do Spring e o erro é o mesmo. Funciona no eclipse, porém, quando exportado para um jar executável, não funciona.
Fabiofalci,
Eu já havia visto esta solução. Mas verificando os arquivos spring.handlers e spring.schemas dentro do JAR, acredito que não haja nenhum problema na configuração. Veja:
Estou quase desistindo de atualizar a versão do Spring e procurar outra solução para o que vou fazer no sistema.
Agradeço a colaboração de todos. Obrigado!
A
abmpicoli
Dá uma olhada na seguinte coisa, carinha.
Repare que o que o carinha está reclamando no código, não é a falta do XSD, mas sim de que o XML que ele está buscando não é válido: Ele não encontra no XML a declaração do elemento “beans”. Só me caiu a ficha agora.
Faz muuuuuuito tempo que mexi com o spring, pra te ajudar melhor nisso. Ele está procurando a definição de beans no XML e não está achando. Será que não está faltando uma configuração do bixo pra ele procurar o xml dentro do jar?
Será que por algum milagre de classpath você está rodando o spring 1 com o spring3 juntos no eclipse, mas quando empacota só fica o 3 e daí o bixo começa a reclamar de alguma incompatibilidade entre o spring 1 e o spring 3?
Resolvi meu problema retirando as anotações do spring do meu código e configurei tudo via xml mesmo, pois percebi que o problema acontecia quando eu utilizava o elemento ‘scan’ do context.
<context:component-scanbase-package="xxxxxx"/>
removi este elemento e funcionou! Obrigado a todos pela colaboração. Se alguém encontrar uma solução, posta aí. Obrigado!!