tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Vysny <...@whitestein.com>
Subject Re: ClassNotFoundException: JaccProvider$Factory
Date Mon, 21 Jan 2008 15:19:05 GMT

On Wed, 2008-01-16 at 14:16 -0800, David Blevins wrote:
> On Jan 16, 2008, at 12:15 PM, Dain Sundstrom wrote:
> 
> > Caused by:  
> > java 
> > .lang 
> > .ClassNotFoundException:org.apache.openejb.core.security.JaccProvider 
> > $Factory
> >       at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> >       at java.security.AccessController.doPrivileged(Native Method)
> >       at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> [...]
> >       at java.lang.Class.forName(Class.java:247)
> >       at  
> > javax 
> > .security 
> > .jacc 
> > .PolicyConfigurationFactory 
> > .getPolicyConfigurationFactory(PolicyConfigurationFactory.java:131)
> >       ... 44 more
> >
> > But, if you look at our spec code for  
> > javax.security.jacc.PolicyConfigurationFactory, there is no code on  
> > line 131, and after browsing the full history of that file, there  
> > has never been a call to Class.forName on line 247.  Do you have a  
> > second (possibly one from Sun), implementation of the JACC spec in  
> > your lib directory or one of your applications?
> 
> That's an interesting possibility.  Could be there is another jar in  
> your classpath providing the jacc api and it randomly ends up before  
> ours (and presumably it's blowing up in it's static initializer).
> 
> Looks like you're in maven2/surefire when this happens.  It should be  
> possible to get a list of the jars in your classpath via the code I  
> posted earlier (surefire's classloader is a subclass of  
> URLClassLoader).  Then you should be able to look in them and see how  
> many copies copy of javax/security/jacc/ 
> PolicyConfigurationFactory.class you have.
> 
> I've got a script for grepping through jars that might be handy:
>    http://docs.codehaus.org/display/ninja/grepjar
> 
> -David
> 

Hi all,
  thanks again, you were right! There was javaee-1.4.jar in the
classpath along with geronimo-jacc implementation. When we removed
javaee-1.4.jar from classpath, OpenEJB started succesfully.
  It was quite an interesting bug though, because on computer A it
worked even with javaee-1.4 on classpath (regardless of whether javaee
was first or last on the classpath), on computer B it failed. Perhaps
some classloader caused it - I don't know for sure. However, to fix this
issue just remove javaee (or other non-OpenEJB/Geronimo JACC
implementation) from classpath.

> > On Jan 16, 2008, at 1:34 AM, Martin Vysny wrote:
> >
> >> Hi guys,
> >> can you please help me with this one? Rarely, the OpenEJB startup
> >> fails with the exception ClassNotFoundException: JaccProvider$Factory
> >> (full stacktrace is below). The interesting point is, that you can  
> >> just
> >> rerun the OpenEJB and the server would start normally. We are using
> >> OpenEJB 3.0-beta-1, and I could swear that the
> >> org.apache.openejb.core.security.JaccProvider$Factory is on the
> >> classpath. We are using java6 x86 on linux:
> >> java version "1.6.0_03"
> >> Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
> >> Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing)
> >> We are not using any special classloader hierarchy (well, not before
> >> OpenEJB is fully started). Perhaps a java bug?
> >> Thanks!
> >> Martin
> >>
> >>
> >> PolicyConfigurationFactory class not found: JACC:Error
> >> PolicyConfigurationFactory : cannot find class :
> >> org.apache.openejb.core.security.JaccProvider$Factory
> >>       at
> >> org 
> >> .apache 
> >> .openejb 
> >> .assembler.classic.Assembler.createApplication(Assembler.java:558)
> >>       at
> >> org 
> >> .apache 
> >> .openejb 
> >> .assembler.classic.Assembler.buildContainerSystem(Assembler.java:299)
> >>       at
> >> org.apache.openejb.assembler.classic.Assembler.build(Assembler.java: 
> >> 207)
> >>       at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:149)
> >>       at org.apache.openejb.OpenEJB.init(OpenEJB.java:293)
> >>       at org.apache.openejb.OpenEJB.init(OpenEJB.java:272)
> >>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>       at
> >> sun 
> >> .reflect 
> >> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>       at
> >> sun 
> >> .reflect 
> >> .DelegatingMethodAccessorImpl 
> >> .invoke(DelegatingMethodAccessorImpl.java:25)
> >>       at java.lang.reflect.Method.invoke(Method.java:597)
> >>       at
> >> org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java: 
> >> 36)
> >>       at
> >> org 
> >> .apache 
> >> .openejb 
> >> .client 
> >> .LocalInitialContextFactory.init(LocalInitialContextFactory.java:59)
> >>       at
> >> org 
> >> .apache 
> >> .openejb 
> >> .client 
> >> .LocalInitialContextFactory 
> >> .getInitialContext(LocalInitialContextFactory.java:45)
> >>       at
> >> javax.naming.spi.NamingManager.getInitialContext(NamingManager.java: 
> >> 667)
> >>       at
> >> javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java: 
> >> 288)
> >>       at javax.naming.InitialContext.init(InitialContext.java:223)
> >>       at javax.naming.InitialContext.<init>(InitialContext.java:197)
> >>       at
> >> com 
> >> .whitestein 
> >> .fe 
> >> .embedded 
> >> .launcher 
> >> .OpenEjbAndJettyLauncher.initOpenEJB(OpenEjbAndJettyLauncher.java: 
> >> 223)
> >>       at
> >> com 
> >> .whitestein 
> >> .fe 
> >> .embedded 
> >> .launcher 
> >> .OpenEjbAndJettyLauncher.launch(OpenEjbAndJettyLauncher.java:146)
> >>       at
> >> com.whitestein.fe.embedded.launcher.Launcher.launch(Launcher.java: 
> >> 107)
> >>       at com.whitestein.fe.it.cal.CalUtils.newComm(CalUtils.java:45)
> >>       at
> >> com.whitestein.fe.it.cal.AbstractCalTest.setUp(AbstractCalTest.java: 
> >> 35)
> >>       at junit.framework.TestCase.runBare(TestCase.java:125)
> >>       at junit.framework.TestResult$1.protect(TestResult.java:106)
> >>       at junit.framework.TestResult.runProtected(TestResult.java:124)
> >>       at junit.framework.TestResult.run(TestResult.java:109)
> >>       at junit.framework.TestCase.run(TestCase.java:118)
> >>       at junit.framework.TestSuite.runTest(TestSuite.java:208)
> >>       at junit.framework.TestSuite.run(TestSuite.java:203)
> >>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>       at
> >> sun 
> >> .reflect 
> >> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>       at
> >> sun 
> >> .reflect 
> >> .DelegatingMethodAccessorImpl 
> >> .invoke(DelegatingMethodAccessorImpl.java:25)
> >>       at java.lang.reflect.Method.invoke(Method.java:597)
> >>       at
> >> org 
> >> .apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java: 
> >> 213)
> >>       at
> >> org 
> >> .apache 
> >> .maven 
> >> .surefire 
> >> .suite 
> >> .AbstractDirectoryTestSuite 
> >> .executeTestSet(AbstractDirectoryTestSuite.java:138)
> >>       at
> >> org 
> >> .apache 
> >> .maven 
> >> .surefire 
> >> .suite 
> >> .AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java: 
> >> 125)
> >>       at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
> >>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>       at
> >> sun 
> >> .reflect 
> >> .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> >>       at
> >> sun 
> >> .reflect 
> >> .DelegatingMethodAccessorImpl 
> >> .invoke(DelegatingMethodAccessorImpl.java:25)
> >>       at java.lang.reflect.Method.invoke(Method.java:597)
> >>       at
> >> org 
> >> .apache 
> >> .maven 
> >> .surefire 
> >> .booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:290)
> >>       at
> >> org 
> >> .apache 
> >> .maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:818)
> >> Caused by: org.apache.openejb.OpenEJBException:
> >> PolicyConfigurationFactory class not found: JACC:Error
> >> PolicyConfigurationFactory : cannot find class :
> >> org.apache.openejb.core.security.JaccProvider$Factory
> >>       at
> >> org 
> >> .apache 
> >> .openejb 
> >> .assembler 
> >> .classic.JaccPermissionsBuilder.install(JaccPermissionsBuilder.java: 
> >> 62)
> >>       at
> >> org 
> >> .apache 
> >> .openejb 
> >> .assembler.classic.Assembler.createApplication(Assembler.java:436)
> >>       ... 42 more
> >> Caused by: java.lang.ClassNotFoundException: JACC:Error
> >> PolicyConfigurationFactory : cannot find class :
> >> org.apache.openejb.core.security.JaccProvider$Factory
> >>       at
> >> javax 
> >> .security 
> >> .jacc 
> >> .PolicyConfigurationFactory 
> >> .getPolicyConfigurationFactory(PolicyConfigurationFactory.java:143)
> >>       at
> >> org 
> >> .apache 
> >> .openejb 
> >> .assembler 
> >> .classic.JaccPermissionsBuilder.install(JaccPermissionsBuilder.java: 
> >> 48)
> >>       ... 43 more
> >> Caused by: java.lang.ClassNotFoundException:
> >> org.apache.openejb.core.security.JaccProvider$Factory
> >>       at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
> >>       at java.security.AccessController.doPrivileged(Native Method)
> >>       at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
> >>       at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> >>       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 
> >> 276)
> >>       at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> >>       at java.lang.ClassLoader.loadClassInternal(ClassLoader.java: 
> >> 319)
> >>       at java.lang.Class.forName0(Native Method)
> >>       at java.lang.Class.forName(Class.java:247)
> >>       at
> >> javax 
> >> .security 
> >> .jacc 
> >> .PolicyConfigurationFactory 
> >> .getPolicyConfigurationFactory(PolicyConfigurationFactory.java:131)
> >>       ... 44 more
> >>
> >
> >
> 
> 
-- 
Mgr. Martin Vysny | mvy@whitestein.com
Software Engineer
Whitestein Technologies s.r.o | www.whitestein.com
Panenska 28 | 811 03 Bratislava | Slovak Republic
Main +421 2 5443-5502 | Direct +421 2 5930-0717


Mime
View raw message