Hi I am trying to demo clover test optimization in my company do decrease the test execution time. I have a simple JSP Page that refers one of the class file. Project builds fine and get deployed. When I use clover code coverage then only the deployed JSP doesnt work. when i deploy with clover using
mvn clean clover2:setup verify clover2:clover.
if I open the JSP deployed using :- http://localhost:8080/demo/Math2.jsp it throws error as below :-
java.lang.NoClassDefFoundError: Could not initialize class com.ariba.demo.App org.apache.jsp.Math2_jsp._jspService(Math2_jsp.java:64) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:723) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
I do see instrumented classes refer this image . In Atlasian answers somebody informed to downgrade to tomcat 6. I did. Still i see the same issue. I need to demo this tomorrow to our team. Here is the project source code . Please help me to get rid of this.
Thanks
Shankar
Hi Shankar,
1) You have an unnecessary dependency to maven-clover2-plugin:
<dependencies> ... <dependency> <groupId>com.atlassian.maven.plugins</groupId> <artifactId>maven-clover2-plugin</artifactId> <version>4.0.1</version> </dependency> </dependencies>
instead of this, you shall declare a dependency to Clover Core:
<dependencies> ... <dependency> <groupId>com.atlassian.clover</groupId> <artifactId>clover</artifactId> <version>4.0.1</version> </dependency> </dependencies>
2) By the way: the maven-clover2-plugin's version number is missing:
<build> <plugins> <plugin> <groupId>com.atlassian.maven.plugins</groupId> <artifactId>maven-clover2-plugin</artifactId> <version>4.0.1</version> <!-- add this --> ...
3) It's also good to define a <jdk> property for maven-clover2-plugin and/or to define <source> property for maven-compiler-plugin. Otherwise your demo project will not compile under JDK8 (a reason is that Clover sees Java 8 and assumes "1.8" source level for instrumentation; at the same time maven-compiler-plugin assumes "1.3" source level).
Nevertheless, compilation of your demo project fails (mvn clean verify):
...\ITSeleniumIDETests.java:[48,35] error: no suitable constructor found for ProcessBuilder(String,String) could not parse error message: constructor ProcessBuilder.ProcessBuilder(List) is not applicable (actual and formal argument lists differ in length) constructor ProcessBuilder.ProcessBuilder(String...) is not applicable (actual and formal argument lists differ in length) ...\ITTest.java:37: error: method executeScript in interface JavascriptExecutor cannot be applied to given types; return js.executeScript(script); ^
4) Furthermore, the cargo-maven2-plugin does not have a dependency on com.atlassian.clover:clover artifact. Due to this, the clover.jar is not available on Tomcat's class path and the most probably this is a source of the error you have. Please try adding something like this:
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.2.0</version> <configuration> <container> <dependencies> <!-- We need clover.jar to be present in container classpath --> <dependency> <groupId>com.cenqua.clover</groupId> <artifactId>clover</artifactId> </dependency> </dependencies> </container> ... </configuration> </plugin>
See also this KB article:
https://confluence.atlassian.com/pages/viewpage.action?pageId=317196439
Cheers
Marek
Wow Marek,
Thank you Thank you Thank you. Your answer was the exact solution. I made the changes you suggested. It worked like a charm.
Thank you once again.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You're welcome! :-)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.