1 Reply Latest reply on Oct 13, 2009 5:08 PM by stephanos

    Web Beans in Web Start?

    stephanos

      Hi,


      how to package a web beans (Weld) Java SE project for web start?


      Obviously I have to merge the classes and dependencies of my project into one JAR (via maven-dependency-plugin). But when I start the fat jar from the console, web beans starts scanning the classpath like crazy (because the beans.xml that was formerly only in my JAR is now public (because of the merge)):


      SEVERE: Error loading bsh/util/BeanShellBSFEngine.class
      java.lang.NoClassDefFoundError: org/apache/bsf/util/BSFEngineImpl
           at java.lang.ClassLoader.defineClass1(Native Method)
           at java.lang.ClassLoader.defineClass(ClassLoader.java:637)
           at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
           at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
           at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
           at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
           at java.security.AccessController.doPrivileged(Native Method)
           at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
           at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
           at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
           at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
           at org.jboss.webbeans.environment.se.discovery.AbstractScanner.handle(AbstractScanner.java:51)
           at org.jboss.webbeans.environment.se.discovery.URLScanner.handleArchiveByFile(URLScanner.java:149)
           at org.jboss.webbeans.environment.se.discovery.URLScanner.handle(URLScanner.java:126)
           at org.jboss.webbeans.environment.se.discovery.URLScanner.scanResources(URLScanner.java:107)
           at org.jboss.webbeans.environment.se.discovery.SEWebBeanDiscovery.scan(SEWebBeanDiscovery.java:71)
           at org.jboss.webbeans.environment.se.discovery.SEWebBeanDiscovery.<init>(SEWebBeanDiscovery.java:45)
           at org.jboss.webbeans.environment.se.StartMain$1.<init>(StartMain.java:69)
           at org.jboss.webbeans.environment.se.StartMain.go(StartMain.java:69)
           at org.jboss.webbeans.environment.se.StartMain.main(StartMain.java:91)
           at org.jboss.webbeans.environment.se.StartMain.main(StartMain.java:86)



      There are a few dozen more - Web Beans takes those form my MANIFEST file - yet when I don't add all the paths, the jar signing that is required for web start doesn't work. Excerpt:




      Manifest-Version: 1.0
      Build-Jdk: 1.6.0_14
      Created-By: Apache Maven
      Main-Class: org.jboss.webbeans.environment.se.StartMain
      Archiver-Version: Plexus Archiver
      
      Name: javax/mail/internet/ContentDisposition.class
      SHA1-Digest: XPnae+DgbD05R+E1xCNdWjZ0aWA=
      
      Name: javax/servlet/ServletRequestWrapper.class
      SHA1-Digest: NHeo4aV0T3E88+17A/YidgOCqtE=
      
      Name: junit/awtui/TestRunner$2.class
      SHA1-Digest: ak43r0m/RwVKKsUxtXNkdkEu6FI=
      
      ...



      Finally the app crashes:


      Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/batik/gvt/GraphicsNode
           at java.lang.Class.getDeclaredMethods0(Native Method)
           at java.lang.Class.privateGetDeclaredMethods(Class.java:2444)
           at java.lang.Class.getDeclaredMethods(Class.java:1808)
           at org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl.<init>(AnnotatedClassImpl.java:197)
           at org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl.of(AnnotatedClassImpl.java:108)
           at org.jboss.webbeans.resources.ClassTransformer$1.call(ClassTransformer.java:36)
           at org.jboss.webbeans.resources.ClassTransformer$1.call(ClassTransformer.java:32)
           at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
           at java.util.concurrent.FutureTask.run(FutureTask.java:166)
           at org.jboss.webbeans.util.collections.ConcurrentCache.putIfAbsent(ConcurrentCache.java:125)
           at org.jboss.webbeans.resources.ClassTransformer.classForName(ClassTransformer.java:31)
           at org.jboss.webbeans.introspector.jlr.AbstractAnnotatedType.<init>(AbstractAnnotatedType.java:64)
           at org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl.<init>(AnnotatedClassImpl.java:113)
           at org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl.of(AnnotatedClassImpl.java:108)
           at org.jboss.webbeans.resources.ClassTransformer$1.call(ClassTransformer.java:36)
           at org.jboss.webbeans.resources.ClassTransformer$1.call(ClassTransformer.java:32)
           at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
           at java.util.concurrent.FutureTask.run(FutureTask.java:166)
           at org.jboss.webbeans.util.collections.ConcurrentCache.putIfAbsent(ConcurrentCache.java:125)
           at org.jboss.webbeans.resources.ClassTransformer.classForName(ClassTransformer.java:31)
           at org.jboss.webbeans.bootstrap.BeanDeployer.addClass(BeanDeployer.java:82)
           at org.jboss.webbeans.bootstrap.BeanDeployer.addClasses(BeanDeployer.java:91)
           at org.jboss.webbeans.bootstrap.WebBeansBootstrap.registerBeans(WebBeansBootstrap.java:152)
           at org.jboss.webbeans.bootstrap.WebBeansBootstrap.boot(WebBeansBootstrap.java:203)
           at org.jboss.webbeans.environment.se.StartMain.go(StartMain.java:73)
           at org.jboss.webbeans.environment.se.StartMain.main(StartMain.java:91)
           at org.jboss.webbeans.environment.se.StartMain.main(StartMain.java:86)
      Caused by: java.lang.ClassNotFoundException: org.apache.batik.gvt.GraphicsNode
           at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
           at java.security.AccessController.doPrivileged(Native Method)
           at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
           at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
           at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
           at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
           at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)
           ... 27 more



      Creative ideas welcome!