title: Packaging Java SE application with weld into executable Jar
body: <p>I Got the following exception while trying to run JAVA SE executable jar from command line:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>However I'am able to run the program sucessfully in eclipse but once packaged into jar I always end up with this error. </p>
  
  <p>Here is my maven package plugin:</p>
  
  <pre><code>     &lt;plugin&gt;
          &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;
          &lt;executions&gt;
            &lt;execution&gt;
              &lt;phase&gt;package&lt;/phase&gt;
              &lt;goals&gt;
                &lt;goal&gt;single&lt;/goal&gt;
              &lt;/goals&gt;
            &lt;/execution&gt;
          &lt;/executions&gt;
          &lt;configuration&gt;
            &lt;descriptorRefs&gt;
              &lt;descriptorRef&gt;jar-with-dependencies&lt;/descriptorRef&gt;
            &lt;/descriptorRefs&gt;
          &lt;/configuration&gt;
        &lt;/plugin&gt;
   &lt;!-- Build an executable JAR --&gt;
      &lt;plugin&gt;
        &lt;!-- Build an executable JAR --&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;
        &lt;configuration&gt;
          &lt;archive&gt;
            &lt;manifest&gt;
              &lt;addClasspath&gt;true&lt;/addClasspath&gt;
              &lt;classpathPrefix&gt;lib/&lt;/classpathPrefix&gt;
              &lt;mainClass&gt;org.jboss.weld.environment.se.StartMain&lt;/mainClass&gt;
            &lt;/manifest&gt;
          &lt;/archive&gt;
        &lt;/configuration&gt;
      &lt;/plugin&gt;
      &lt;/plugins&gt;
  </code></pre>
  
  <p>and here is how I bootstrap Weld:</p>
  
  <pre><code>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(); 
  //      }
  //
  //    }
  </code></pre>
  
  <p>(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.</p>