2014-09-11 14 views
7

So in Java SE Initialisierung, ich habe ein grundlegendes Java SE Programm mit Dependency Injection mit Weld 1.2.Hibernate machen Weld nicht

Alles funktioniert gut, bis ich in den Mix Hibernate werfen, mit den folgenden pom.xml Abhängigkeit Einträge:

<dependency> 
    <groupId>javax</groupId> 
    <artifactId>javaee-api</artifactId> 
    <version>7.0</version> 
</dependency> 
<dependency> 
    <groupId>org.jboss.weld.se</groupId> 
    <artifactId>weld-se</artifactId> 
    <version>2.2.4.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>4.3.6.Final</version> 
</dependency> 

Hibernate die hinzugefügt Abhängigkeit zu sein, sie brechen zu machen. Das ist mein Eintrag Klasse:

public class EntryPoint { 
    public static void main(String[] ARGV) { 
     Weld weld = new Weld(); 
     WeldContainer container = weld.initialize(); 

     Application application = container.instance().select(Application.class).get(); 

     application.testFetch(); 

     weld.shutdown(); 
    } 
} 

Wenn ich versuche, es nach einschließlich Hibernate Abhängigkeit zu laufen, das ist meine Ausgabe lautet:

Sep 11, 2014 11:13:44 PM org.jboss.weld.bootstrap.WeldStartup <clinit> 
INFO: WELD-000900: 2.2.4 (Final) 
Sep 11, 2014 11:13:44 PM org.jboss.weld.bootstrap.WeldStartup startContainer 
INFO: WELD-000101: Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously. 
Exception in thread "main" org.jboss.weld.exceptions.DeploymentException: org.jboss.jandex.ClassInfo.hasNoArgsConstructor()Z 
    at org.jboss.weld.executor.AbstractExecutorServices.checkForExceptions(AbstractExecutorServices.java:66) 
    at org.jboss.weld.executor.AbstractExecutorServices.invokeAllAndCheckForExceptions(AbstractExecutorServices.java:43) 
    at org.jboss.weld.executor.AbstractExecutorServices.invokeAllAndCheckForExceptions(AbstractExecutorServices.java:51) 
    at org.jboss.weld.bootstrap.ConcurrentBeanDeployer.addClasses(ConcurrentBeanDeployer.java:62) 
    at org.jboss.weld.bootstrap.BeanDeployment.createClasses(BeanDeployment.java:209) 
    at org.jboss.weld.bootstrap.WeldStartup.startInitialization(WeldStartup.java:351) 
    at org.jboss.weld.bootstrap.WeldBootstrap.startInitialization(WeldBootstrap.java:76) 
    at org.jboss.weld.environment.se.Weld.initialize(Weld.java:157) 
    at com.mybeautycompare.integration.EntryPoint.main(EntryPoint.java:24) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 
Caused by: java.lang.NoSuchMethodError: org.jboss.jandex.ClassInfo.hasNoArgsConstructor()Z 
    at org.jboss.weld.environment.se.discovery.WeldSEClassFileInfo.<init>(WeldSEClassFileInfo.java:65) 
    at org.jboss.weld.environment.se.discovery.WeldSEClassFileServices.getClassFileInfo(WeldSEClassFileServices.java:85) 
    at org.jboss.weld.bootstrap.FastAnnotatedTypeLoader.loadAnnotatedType(FastAnnotatedTypeLoader.java:61) 
    at org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:97) 
    at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$1.doWork(ConcurrentBeanDeployer.java:65) 
    at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$1.doWork(ConcurrentBeanDeployer.java:62) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Linie 24 in meiner Entrypoint-Klasse ist: WeldContainer container = weld.initialize();

Antwort

22

Diese hat nichts mit Hibernate zu tun. Sie vermissen den Jandex aus Ihrem Klassenpfad, der in Weld 2.2.x benötigt wird. Stellen Sie sicher, dass Sie nach dem Erstellen auf dem Klassenpfad ein jandix 1.2 jar haben.

Da Sie Maven verwenden, fügen Sie diese zu Ihrer pom.xml:

<dependency> 
    <groupId>org.jboss</groupId> 
    <artifactId>jandex</artifactId> 
    <version>1.2.2.Final</version> 
</dependency> 

Zusammenhang auch:

Why is Hibernate 4.2 using jandex and classmate if its Maven POM defines them as test scope?

+0

Danke, das war die Lösung. – Wrench