kaape / jberet-standalone-example

An example how to setup jberet as a standalone java application
MIT License
4 stars 0 forks source link

Error while running in command prompt in Java SE mode #3

Open tcesenthil opened 6 years ago

tcesenthil commented 6 years ago

This example runs fine from Eclipse IDE but, when packaged as a fat JAR and executed from my windows command prompt i get the following exception.

Could you please help ?

Note: My java runtime version is --> java version "1.8.0_131" / Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

WARN: WELD-001125: Illegal bean type interface java.util.Map<java.lang.Class<?>,class javax.el.BeanELResolver$BeanProperties> ignored on [EnhancedAnnotatedTypeImpl]
private static  class javax.el.BeanELResolver$SoftConcurrentHashMap
Oct 03, 2017 11:19:56 AM org.jboss.weld.util.Beans omitIllegalBeanTypes
WARN: WELD-001125: Illegal bean type interface java.util.concurrent.ConcurrentMap<java.lang.Class<?>,class javax.el.BeanELResolver$BeanProperties> ignored on [Enhanc
edAnnotatedTypeImpl] private static  class javax.el.BeanELResolver$SoftConcurrentHashMap
Exception in thread "main" java.util.ServiceConfigurationError: javax.batch.operations.JobOperator: Provider org.jberet.operations.JobOperatorImpl could not be insta
ntiated
        at java.util.ServiceLoader.fail(Unknown Source)
        at java.util.ServiceLoader.access$100(Unknown Source)
        at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source)
        at java.util.ServiceLoader$LazyIterator.next(Unknown Source)
        at java.util.ServiceLoader$1.next(Unknown Source)
        at javax.batch.runtime.BatchRuntime$1.run(BatchRuntime.java:51)
        at javax.batch.runtime.BatchRuntime$1.run(BatchRuntime.java:46)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.batch.runtime.BatchRuntime.getJobOperator(BatchRuntime.java:46)
        at com.ditemis.jberet.Main.main(Main.java:9)
Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 2 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type StepContext with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private org.jberet.repository.PurgeBatchlet.stepContext
  at org.jberet.repository.PurgeBatchlet.stepContext(PurgeBatchlet.java:0)
  Possible dependencies:
  - Producer Method [StepContext] with qualifiers [@Any @Default] declared as [[UnbackedAnnotatedMethod] @Produces public org.jberet.creation.BatchBeanProducer.getSt
epContext()],
  - Producer Method [StepContext] with qualifiers [@Any @Default] declared as [[BackedAnnotatedMethod] @Produces public org.jberet.creation.BatchBeanProducer.getStep
Context()]

        at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:367)
        at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281)
        at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134)
        at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155)
        at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518)
        at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
        at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
        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(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type StepContext with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject com.ditemis.jberet.HelloWorldBatchlet.stepContext
  at com.ditemis.jberet.HelloWorldBatchlet.stepContext(HelloWorldBatchlet.java:0)
  Possible dependencies:
  - Producer Method [StepContext] with qualifiers [@Any @Default] declared as [[UnbackedAnnotatedMethod] @Produces public org.jberet.creation.BatchBeanProducer.getSt
epContext()],
  - Producer Method [StepContext] with qualifiers [@Any @Default] declared as [[BackedAnnotatedMethod] @Produces public org.jberet.creation.BatchBeanProducer.getStep
Context()]

        at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:367)
        at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281)
        at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134)
        at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155)
        at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518)
        at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
        at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
        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(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

        at org.jboss.weld.bootstrap.ConcurrentValidator.validateBeans(ConcurrentValidator.java:76)
        at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:479)
        at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:443)
        at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90)
        at org.jboss.weld.environment.se.Weld.initialize(Weld.java:143)
        at org.jberet.se.SEArtifactFactory.<init>(SEArtifactFactory.java:29)
        at org.jberet.se.BatchSEEnvironment.getArtifactFactory(BatchSEEnvironment.java:133)
        at org.jberet.operations.JobOperatorImpl.<init>(JobOperatorImpl.java:93)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        ... 8 more
tcesenthil commented 6 years ago

on further analysis i see StepContextImpl.class and StepContextImpl$1.class in org.jberet.runtime.context and StepContext.class in javax.batch.runtime.context in my executable jar. Wondering if this conflict is causing the issue.

did you also face the same problem ?

The javax.batch.runtime libraries are added by the following dependency

    <dependency>
      <groupId>javax.batch</groupId>
      <artifactId>javax.batch-api</artifactId>
      <version>1.0.1</version>
      <scope>compile</scope>
    </dependency>
tcesenthil commented 6 years ago

i now replaced the maven-assembly plugin with the maven-shade plugin to build my fat jar and i can see the following warning while packaging the jar

[WARNING] javax.inject-1.jar, weld-se-2.2.15.Final.jar define 6 overlapping classes: 
[WARNING] - javax.inject.Inject 
[WARNING] - javax.inject.Singleton 
[WARNING] - javax.inject.Scope 
[WARNING] - javax.inject.Named 
[WARNING] - javax.inject.Provider 
[WARNING] - javax.inject.Qualifier 

I updated the following dependency to provided and now i don't see the above said warning but, am still getting exceptions when running the newly generated jar

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
            <scope>provided</scope>
        </dependency>
tcesenthil commented 6 years ago

After the above change of not packaging javax.inject dependency, now am getting the following exception. Looks like there are some more conflicting classes (but, they are not being reported by Maven-Shade) at the runtime environment

Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type InjectionPoint with qualifiers @Default
  at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedMethod] @Produces @BatchProperty public org.jberet.creation.BatchBeanProducer.getStringList(InjectionPoint)
  at org.jberet.creation.BatchBeanProducer.getStringList(BatchBeanProducer.java:0)
  Possible dependencies:
  - Implicit Bean [javax.enterprise.inject.spi.InjectionPoint] with qualifiers [@Default],
  - Managed Bean [class org.jboss.weld.manager.BeanManagerImpl$InstanceInjectionPoint] with qualifiers [@Any @Default],
  - Managed Bean [class org.jboss.weld.injection.EmptyInjectionPoint] with qualifiers [@Any @Default]

        at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:392)
        at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:294)
        at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
        at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:168)
        at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:543)
        at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
        at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
        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(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type InjectionPoint with qualifiers @Default
  at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedMethod] @Produces @BatchProperty public org.jberet.creation.BatchBeanProducer.getStringBuilder(InjectionPoint)
  at org.jberet.creation.BatchBeanProducer.getStringBuilder(BatchBeanProducer.java:0)
  Possible dependencies:
  - Implicit Bean [javax.enterprise.inject.spi.InjectionPoint] with qualifiers [@Default],
  - Managed Bean [class org.jboss.weld.manager.BeanManagerImpl$InstanceInjectionPoint] with qualifiers [@Any @Default],
  - Managed Bean [class org.jboss.weld.injection.EmptyInjectionPoint] with qualifiers [@Any @Default]

        at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:392)
        at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:294)
        at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
        at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:168)
        at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:543)
        at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
        at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
        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(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

        at org.jboss.weld.bootstrap.ConcurrentValidator.validateBeans(ConcurrentValidator.java:76)
        at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:504)
        at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:435)
        at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90)
        at org.jboss.weld.environment.se.Weld.initialize(Weld.java:148)
        at org.jberet.se.SEArtifactFactory.<init>(SEArtifactFactory.java:29)
        at org.jberet.se.BatchSEEnvironment.getArtifactFactory(BatchSEEnvironment.java:133)
        at org.jberet.operations.JobOperatorImpl.<init>(JobOperatorImpl.java:93)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        ... 8 more