Externalizei algumas classes em comum entre vários projetos, em um projeto separado.
Após isso, estou recebendo essa exceção do VRaptor. Preciso fazer algum mapeamento adicional?
[quote]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘br.com.cauirs.nome.infra.CriadorDeSessionFactory’: FactoryBean threw exception on object creation; nested exception is java.lang.NoClassDefFoundError: Lbr/com/cauirs/tipos/Dinheiro;
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:150)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1387)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:244)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:820)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:762)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:771)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:691)
… 64 more
Caused by: java.lang.NoClassDefFoundError: Lbr/com/cauirs/tipos/Dinheiro;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2308)
at java.lang.Class.getDeclaredFields(Class.java:1760)
at org.hibernate.annotations.common.reflection.java.JavaXClass.getDeclaredFieldProperties(JavaXClass.java:102)
at org.hibernate.annotations.common.reflection.java.JavaXClass.getDeclaredProperties(JavaXClass.java:126)
at org.hibernate.annotations.common.reflection.java.JavaXClass.getDeclaredProperties(JavaXClass.java:121)
at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:259)
at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:223)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:686)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3977)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3931)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1368)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1826)
at br.com.cauirs.nome.infra.CriadorDeSessionFactory.abrirSessionFactory(CriadorDeSessionFactory.java:35)
at br.com.cauirs.nome.infra.CriadorDeSessionFactory.getInstance(CriadorDeSessionFactory.java:47)
at br.com.cauirs.nome.infra.CriadorDeSessionFactory.getInstance(CriadorDeSessionFactory.java:1)
at br.com.caelum.vraptor.ioc.spring.ComponentFactoryBean.getObject(ComponentFactoryBean.java:43)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:143)
… 73 more
Caused by: java.lang.ClassNotFoundException: br.com.cauirs.tipos.Dinheiro
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
… 91 more[/quote]
Class CriadorDeSessionFactory
[code]@Component
@ApplicationScoped
public class CriadorDeSessionFactory implements ComponentFactory
{
private Map<Tenant, SessionFactory> conexoes = new HashMap<Tenant, SessionFactory>();
private SessionFactory abrirSessionFactory()
{
SessionFactory conexao;
Configuration configuracao = new Configuration();
String arquivoConfiguracao = new StringBuilder().append("hibernate").append(".cfg.xml").toString();
configuracao.configure(arquivoConfiguracao);
configuracao.addAnnotatedClass(Venda.class); //ERRO OCORRE NESSA LINHA
conexao = configuracao.buildSessionFactory();
return conexao;
}
@Override
public SessionFactory getInstance()
{
SessionFactory conexao = conexoes.get("hibernate");
if( conexao == null )
{
conexao = abrirSessionFactory();
}
return conexao;
}
}[/code]
Classe Venda:
[code]@Entity
@Table(name=“venda”)
@XStreamAlias(“venda”)
public class Venda
{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Embedded
private Dinheiro valorItens = new Dinheiro();
.....
}[/code]
Observações:
- O projeto está referenciado no Eclipse, tanto é que consigo usar a classe no código.
- Se copio a classe Dinheiro para dentro do projeto, funciona.