Tenho dois projetos Projeto A e Projeto B. O projeto B depende do projeto A. Fiz uma alteração no projeto A, mas continuo usando a versão antiga do projeto A no projeto B. O que acontece é que o projeto B mesmo usando a versão antiga do jar do projeto A ele não sobe no JBoss AS 7.2 porque ele fica requisitando as alterações feitas na nova versão a qual não estou usando. Não entendo o porque.
Ambos estão abertos no seu Eclipse? Se sim, valide no projeto A na lista de dependências do Maven no próprio Eclipse se ele aponta para o projeto B aberto ou para o arquivo .jar do projeto B.
Se apontar para o projeto B aberto, ponha um breakpoint no trecho do código que você modificou para verificarmos se a alteração está lá, se não compile novamente o Projeto B dando um “clean install” do Maven, para que suas alterações subam ao repository local.
É possível que no seu repository você ainda esteja com a versão antiga do Projeto B.
Mas eu quero continuar usando a versão antiga, mas da erro. E verifiquei aqui ele não aponta para a versão nova não, por isso achei estranho, quero continuar usando a versão antiga e ele da o seguinte erro
11:41:27,026 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC00001: Failed to start service jboss.deployment.unit."sinup.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."sinup.war".POST_MODULE: JBAS018733: Failed to process phase POST_MODULE of deployment "sinup.war" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:127) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA.jar:1.0.4.GA] at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA.jar:1.0.4.GA] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_80] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_80] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80] Caused by: java.lang.RuntimeException: JBAS018757: Error getting reflective information for class br.unb.web.pessoa.negocio.EnderecoNegocioImpl with ClassLoader ModuleClassLoader for Module "deployment.sinup.war:main" from Service Module Loader at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:72) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:58) at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:107) at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:92) at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:77) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] ... 5 more Caused by: java.lang.NoClassDefFoundError: Lbr/unb/web/sitab/negocio/ManterBairroNegocio; at java.lang.Class.getDeclaredFields0(Native Method) [rt.jar:1.7.0_80] at java.lang.Class.privateGetDeclaredFields(Class.java:2509) [rt.jar:1.7.0_80] at java.lang.Class.getDeclaredFields(Class.java:1819) [rt.jar:1.7.0_80] at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:57) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:68) [jboss-as-server-7.2.0.Final.jar:7.2.0.Final] ... 10 more Caused by: java.lang.ClassNotFoundException: br.unb.web.sitab.negocio.ManterBairroNegocio from [Module "deployment.sinup.war:main" from Service Module Loader] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.2.0.CR1] at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.2.0.CR1] at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.2.0.CR1] at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.2.0.CR1] at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.2.0.CR1] ... 15 more
o sinup.war é o projeto principal ou o secundário?
O Sinup é o projeto que usa o Sitab no caso e não quero atualizar o jar do sitab no sinup, mas preciso atualizar o projeto Sitab para utilizar em outro projeto.
Então o que está ocorrendo é isso. Seu POM do snup deve estar apontando para uma versão X.X do Sitab.
Por exemplo, antes de alterar o SITAB ele deveria ter no seu pom.xml algo como:
<groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.0</version> <packaging>jar</packaging>
Quando você executa o comando “clean install” o maven instala esse app no seu repository em um diretório {maven_repo}/com/mycompany/app/1.0
Assim quando você colocar a dependência desse jar apontando para a versão 1.0 do SITAB, ele vai buscar essa versão.
Então você faz a sua alteração mais nova e antes de executar o comando “clean install” você deve alterar a versão no seu POM para
<groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.1</version> <!-- OU QUALQUER NUMERO QUE SEJA SUA NOVA VERSÃO --> <packaging>jar</packaging>
E após executar o comando “clean install” você terá em seu repository o seguinte:
{maven_repo}
- /com/mycompany/app/1.0
- /com/mycompany/app/1.1
Então para alternar entre as versões da dependência você (no sinup) decide para qual das versões do SITAB deve apontar
ASSIM:
<dependency> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.0</version> </dependency>
OU ASSIM:
<dependency> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <version>1.1</version> </dependency>
Sendo que o primeiro vai trazer a primeira versão do seu código sem a alteração e a segunda trará sua alteração.
Se seu problema for apenas versão do Maven e gerenciar as dependências, creio que isso possa ajudar, se não for, vamos continuar analisando.
Espero ter ajudado. Abraços