SecurityException when using ClassImposteriser

View: New views
2 Messages — Rating Filter:   Alert me  

SecurityException when using ClassImposteriser

by Louis Rose-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi all,

With both JMock 2.5.1 and 2.6RC1, I'm getting a stack trace when using
ClassImposteriser. The stack trace is included at the end of this
message. Any ideas as to how resolve this issue?

Not sure if it's significant, but I'm running my test with Eclipse. The
JMock JARs are bundled in an Eclipse plugin project on which my test
plugin depends.

Here's the test class:

@RunWith(JMock.class)
public class MigrationStrategyTest {
       
        private final MigrationContext context = new MigrationContext();
       
        private Mockery mockery;
       
        @Before
        public void setup() {
                mockery = new JUnit4Mockery() {{
                        setImposteriser(ClassImposteriser.INSTANCE);
                }};
               
                // create mock objects
        }

        @Test
        public void delegatesToApplicableRule() {
               
                mockery.checking(new Expectations() {{
                        // set expectations
                }});
               
                // execute
                strategy.migrate(original, context);
        }
}

Cheers,
Louis.

----
Louis Rose
Research Student
Department of Computer Science,
University of York,
Heslington, York, YO10 5DD, United Kingdom.
+44 1904 434762
Twitter: @louismrose


java.lang.SecurityException: class "org.hamcrest.TypeSafeMatcher"'s
signer information does not match signer information of other classes in
the same package
        at java.lang.ClassLoader.checkCerts(ClassLoader.java:858)
        at java.lang.ClassLoader.preDefineClass(ClassLoader.java:570)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:697)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
        at
org.jmock.internal.InvocationExpectationBuilder.createExpectationFrom(InvocationExpectationBuilder.java:86)
        at
org.jmock.internal.InvocationToExpectationTranslator.invoke(InvocationToExpectationTranslator.java:19)
        at org.jmock.internal.FakeObjectMethods.invoke(FakeObjectMethods.java:38)
        at
org.jmock.lib.legacy.ClassImposteriser$4.invoke(ClassImposteriser.java:137)
        at
org.eclipse.epsilon.migration.copy.Copier$$EnhancerByCGLIB$$987188f5.copy(<generated>)
        at
org.eclipse.epsilon.migration.model.MigrationStrategyTest$2.<init>(MigrationStrategyTest.java:66)
        at
org.eclipse.epsilon.migration.model.MigrationStrategyTest.delegatesToApplicableRule(MigrationStrategyTest.java:65)
        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.junit.internal.runners.TestMethod.invoke(TestMethod.java:66)
        at org.jmock.integration.junit4.JMock$1.invoke(JMock.java:37)
        at
org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:105)
        at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:86)
        at
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:94)
        at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84)
        at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
        at
org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:96)
        at
org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:59)
        at
org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:52)
        at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
        at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
        at
org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:50)
        at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
        at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: SecurityException when using ClassImposteriser

by Louis Rose-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi all,

I encountered this problem again today. It seems that Eclipse Galileo
bundles JUnit 4.5, which in turn bundles Hamcrest Core 1.1, which does
not contain org.hamcrest.TypeSafeMatcher.

JMock 2.5.1, however, bundles Hamcrest 1.1, with TypeSafeMatcher. The
Eclipse JUnit 4.5 distribution contains signed JARs, and hence the
exception.

The solution is to ensure that any dependencies on JMock JARs occur
before dependencies on JUnit in every plug-in. That way, Hamcrest is
loaded from JMock, not from JUnit.

If you encounter this problem, feel free to send me an email for more
details.

Cheers,
Louis.

Louis Rose wrote:

> Hi all,
>
> With both JMock 2.5.1 and 2.6RC1, I'm getting a stack trace when using
> ClassImposteriser. The stack trace is included at the end of this
> message. Any ideas as to how resolve this issue?
>
> Not sure if it's significant, but I'm running my test with Eclipse. The
> JMock JARs are bundled in an Eclipse plugin project on which my test
> plugin depends.
>
> Here's the test class:
>
> @RunWith(JMock.class)
> public class MigrationStrategyTest {
>    
>     private final MigrationContext context = new MigrationContext();
>    
>     private Mockery mockery;
>    
>     @Before
>     public void setup() {
>         mockery = new JUnit4Mockery() {{
>             setImposteriser(ClassImposteriser.INSTANCE);
>         }};
>        
>         // create mock objects
>     }
>
>     @Test
>     public void delegatesToApplicableRule() {  
>        
>         mockery.checking(new Expectations() {{
>             // set expectations
>         }});
>        
>         // execute
>         strategy.migrate(original, context);
>     }
> }
>
> Cheers,
> Louis.
>
> ----
> Louis Rose
> Research Student
> Department of Computer Science,
> University of York,
> Heslington, York, YO10 5DD, United Kingdom.
> +44 1904 434762
> Twitter: @louismrose
>
>
> java.lang.SecurityException: class "org.hamcrest.TypeSafeMatcher"'s
> signer information does not match signer information of other classes in
> the same package
>     at java.lang.ClassLoader.checkCerts(ClassLoader.java:858)
>     at java.lang.ClassLoader.preDefineClass(ClassLoader.java:570)
>     at java.lang.ClassLoader.defineClass(ClassLoader.java:697)
>     at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
>     at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>     at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>     at java.lang.ClassLoader.defineClass1(Native Method)
>     at java.lang.ClassLoader.defineClass(ClassLoader.java:703)
>     at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
>     at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
>     at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
>     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:402)
>     at
> org.jmock.internal.InvocationExpectationBuilder.createExpectationFrom(InvocationExpectationBuilder.java:86)
>
>     at
> org.jmock.internal.InvocationToExpectationTranslator.invoke(InvocationToExpectationTranslator.java:19)
>
>     at
> org.jmock.internal.FakeObjectMethods.invoke(FakeObjectMethods.java:38)
>     at
> org.jmock.lib.legacy.ClassImposteriser$4.invoke(ClassImposteriser.java:137)
>     at
> org.eclipse.epsilon.migration.copy.Copier$$EnhancerByCGLIB$$987188f5.copy(<generated>)
>
>     at
> org.eclipse.epsilon.migration.model.MigrationStrategyTest$2.<init>(MigrationStrategyTest.java:66)
>
>     at
> org.eclipse.epsilon.migration.model.MigrationStrategyTest.delegatesToApplicableRule(MigrationStrategyTest.java:65)
>
>     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.junit.internal.runners.TestMethod.invoke(TestMethod.java:66)
>     at org.jmock.integration.junit4.JMock$1.invoke(JMock.java:37)
>     at
> org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:105)
>
>     at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:86)
>     at
> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:94)
>
>     at
> org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84)
>     at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
>     at
> org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:96)
>
>     at
> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:59)
>
>     at
> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:52)
>
>     at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
>     at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
>     at
> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:50)
>     at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
>
>     at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>    http://xircles.codehaus.org/manage_email
>
>
>


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email