Reputation: 140
I have a legacy application using struts 1 and torque. I have made an effort last week to refactor it a bit and tried to decouple some groups of classes and introduced unit tests. As I can not test all areas of the application through unit tests, I wanted to add HtmlUnit tests.
To to this, I added the maven-failsafe-plugin and jetty to my project, like so:
<build>
...
<plugins>
...
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.16</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopPort>8005</stopPort>
<stopKey>STOP</stopKey>
<contextPath>/</contextPath>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
The problem is, that when I run mvn verify, I get the following exception:
java.lang.SecurityException: sealing violation: can't seal package javax.naming: already loaded
I am using javax.naming in some classes, but can't find any dependency that overrides javax.naming!
Does anybody have a clue about how to figure this problem out?
Upvotes: 2
Views: 321
Reputation: 1838
I always seal my JARs and never had an issue with surefire since it runs the tests before packaging a JAR. But failsafe runs the integration tests against the completed jar, so if the tests are in the same package, and either your production or test jar is sealed, you'll get this issue. You can check for Sealed: true
in the MANIFEST.MF file of the JARs concerned.
Upvotes: 0