I Got the following exception while trying to run JAVA SE executable jar from command line:
Exception in thread "main" org.jboss.weld.exceptions.DeploymentException: java.lang.Internand
at org.jboss.weld.executor.AbstractExecutorServices.checkForExceptions(AbstractExec
at org.jboss.weld.executor.AbstractExecutorServices.invokeAllAndCheckForExceptions()
at org.jboss.weld.executor.AbstractExecutorServices.invokeAllAndCheckForExceptions()
at org.jboss.weld.bootstrap.ConcurrentBeanDeployer.addClasses(ConcurrentBeanDeploye
at org.jboss.weld.bootstrap.BeanDeployment.createClasses(BeanDeployment.java:203)
at org.jboss.weld.bootstrap.WeldStartup.startInitialization(WeldStartup.java:374)
at org.jboss.weld.bootstrap.WeldBootstrap.startInitialization(WeldBootstrap.java:76
at org.jboss.weld.environment.se.Weld.initialize(Weld.java:556)
at org.jboss.weld.environment.se.StartMain.go(StartMain.java:44)
at org.jboss.weld.environment.se.StartMain.main(StartMain.java:53)
Caused by: com.google.common.util.concurrent.ExecutionError: java.lang.InternalError: Enclo at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197) at com.google.common.cache.LocalCache.get(LocalCache.java:3932) at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3936) at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4806) at org.jboss.weld.util.cache.LoadingCacheUtils.getCacheValue(LoadingCacheUtils.java at org.jboss.weld.util.cache.LoadingCacheUtils.getCastCacheValue(LoadingCacheUtils. at org.jboss.weld.resources.ClassTransformer.getBackedAnnotatedType(ClassTransforme at org.jboss.weld.resources.ClassTransformer.getBackedAnnotatedType(ClassTransforme at org.jboss.weld.bootstrap.AnnotatedTypeLoader.loadAnnotatedType(AnnotatedTypeLoad at org.jboss.weld.bootstrap.AnnotatedTypeLoader.loadAnnotatedType(AnnotatedTypeLoad at org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:97) at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$1.doWork(ConcurrentBeanDeployer. at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$1.doWork(ConcurrentBeanDeployer. at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFac at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFac 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) Caused by: java.lang.InternalError: Enclosing method not found at java.lang.Class.getEnclosingMethod(Class.java:1065) at sun.reflect.generics.scope.ClassScope.computeEnclosingScope(ClassScope.java:50) at sun.reflect.generics.scope.AbstractScope.getEnclosingScope(AbstractScope.java:78 at sun.reflect.generics.scope.AbstractScope.lookup(AbstractScope.java:96) at sun.reflect.generics.scope.AbstractScope.lookup(AbstractScope.java:96) at sun.reflect.generics.scope.AbstractScope.lookup(AbstractScope.java:96) at sun.reflect.generics.scope.AbstractScope.lookup(AbstractScope.java:96) at sun.reflect.generics.factory.CoreReflectionFactory.findTypeVariable(CoreReflecti at sun.reflect.generics.visitor.Reifier.visitTypeVariableSignature(Reifier.java:165 at sun.reflect.generics.tree.TypeVariableSignature.accept(TypeVariableSignature.jav at sun.reflect.generics.repository.MethodRepository.getReturnType(MethodRepository. at java.lang.reflect.Method.getGenericReturnType(Method.java:255) at org.jboss.weld.annotated.slim.backed.BackedAnnotatedMethod.(BackedAnnotate at org.jboss.weld.annotated.slim.backed.BackedAnnotatedMethod.of(BackedAnnotatedMet at org.jboss.weld.annotated.slim.backed.BackedAnnotatedType$BackedAnnotatedMethods..java:195) at org.jboss.weld.annotated.slim.backed.BackedAnnotatedType$BackedAnnotatedMethods..java:188) at org.jboss.weld.util.LazyValueHolder.get(LazyValueHolder.java:35) at org.jboss.weld.annotated.slim.backed.BackedAnnotatedType$EagerlyInitializedLazyVdType.java:156) at org.jboss.weld.annotated.slim.backed.BackedAnnotatedType$BackedAnnotatedMethods.188) at org.jboss.weld.annotated.slim.backed.BackedAnnotatedType$BackedAnnotatedMethods.188) at org.jboss.weld.annotated.slim.backed.BackedAnnotatedType.(BackedAnnotatedT at org.jboss.weld.annotated.slim.backed.BackedAnnotatedType.of(BackedAnnotatedType. at org.jboss.weld.resources.ClassTransformer$TransformClassToBackedAnnotatedType.lo at org.jboss.weld.resources.ClassTransformer$TransformClassToBackedAnnotatedType.lo at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.j at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315) at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193) ... 18 more
However I'am able to run the program sucessfully in eclipse but once packaged into jar I always end up with this error.
Here is my maven package plugin:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<!-- Build an executable JAR -->
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>org.jboss.weld.environment.se.StartMain</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
and here is how I bootstrap Weld:
public static void main(String[] args) {
//Start CDI container
WeldContainer weldContainer = WeldFactory.INSTANCE.getWeldContainer();
try {
MainThread mainExecutor = weldContainer.instance().select(MainThread.class).get();
mainExecutor.run();
} catch (Exception e) {
LOG.error("Fatal error",e);
}finally {
//Shutdwon CDI container
weldContainer.shutdown();
}
}
// @Inject
// MainThread mainExecutor;
//
// public void main(@Observes ContainerInitialized event){
// try {
// //MainThread mainExecutor = weldContainer.instance().select(MainThread.class).get();
// mainExecutor.run();
// } catch (Exception e) {
// LOG.error("Fatal error",e);
// }finally {
// //Shutdwon CDI container
// //weldContainer.shutdown();
// }
//
// }
(I've tried both commented and uncommented code but still getting the same error). Any help will be great, I've really tried all things.
User Siliarus has helped you, kudos for him.
Now you have encountered another problem. App shutdowns immediately.
It's not strange - that's happens because you don't make use of the
ContainerInitialized
event. If you are using the built-inorg.jboss.weld.environment.se.StartMain
class, then you should have a simple bean which observes theContainerInitialized
event.Alternatively, you can make use of the Main class, which content you've pasted above. To do this, instruct a
maven-jar-plugin
to use your shiny class with amain
method with something like this:In case of another problems, I encourage you to take a look at the working examples of Weld's usage: https://github.com/weld/core/tree/master/examples.
Hope it helps.