Problem Running Emma

876 views
Skip to first unread message

Steve Ramage

unread,
Nov 26, 2011, 1:25:00 AM11/26/11
to CPSC410-2011
I'm having a problem getting Emma to run. I suspect the problem is
that my JUnit Tests are in the same project as my application. The
JUnit Java instance starts up, binds to whatever port, and then When
the servlet is loaded, it tries to load it but the port is already in
use.


When I start the JUnit Test, tomcat throws an exception from Emma as
the following:


java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:
353)
at java.net.ServerSocket.bind(ServerSocket.java:336)
at java.net.ServerSocket.<init>(ServerSocket.java:202)
at java.net.ServerSocket.<init>(ServerSocket.java:114)
at com.vladium.emma.rt.RTController.start(RTController.java:99)
at com.vladium.emma.rt.RT.reset(RT.java:222)
at com.vladium.emma.rt.RT.<clinit>(RT.java:540)
at ca.ubc.cpsc410.meetmarket.servlets.MeetMarketServlet.
$VRi(MeetMarketServlet.java)
at
ca.ubc.cpsc410.meetmarket.servlets.MeetMarketServlet.<clinit>(MeetMarketServlet.java)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
57)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:
45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at
org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:
127)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:
1099)
at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:
836)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
135)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
169)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:
472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
100)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
929)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
405)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:
964)
at org.apache.coyote.AbstractProtocol
$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint
$SocketProcessor.run(JIoEndpoint.java:302)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)
25-Nov-2011 10:16:40 PM org.apache.catalina.core.ApplicationContext
log
INFO: Marking servlet ca.ubc.cpsc410.meetmarket.servlets.EventServlet
as unavailable
25-Nov-2011 10:16:40 PM org.apache.catalina.core.StandardWrapperValve
invoke
SEVERE: Allocate exception for servlet
ca.ubc.cpsc410.meetmarket.servlets.EventServlet
java.lang.Error: EMMA: runtime controller could not be started,
aborting
at com.vladium.emma.rt.RT.reset(RT.java:233)
at com.vladium.emma.rt.RT.<clinit>(RT.java:540)
at ca.ubc.cpsc410.meetmarket.servlets.MeetMarketServlet.
$VRi(MeetMarketServlet.java)
at
ca.ubc.cpsc410.meetmarket.servlets.MeetMarketServlet.<clinit>(MeetMarketServlet.java)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
57)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:
45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at
org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:
127)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:
1099)
at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:
836)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
135)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
169)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:
472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
100)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:
929)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
405)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:
964)
at org.apache.coyote.AbstractProtocol
$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint
$SocketProcessor.run(JIoEndpoint.java:302)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)

I'm not sure of the exact sequence I should use when running Emma to
avoid this from happening. Unfortunately my tests use a lot of the
libraries that are in the project. I did try exporting my JUnit test
cases to another project, and taking this project as a Jar, but
somehow the build has been modified to include the emma stuff which is
no longer included:

JUnit throws an exception:

java.lang.NoClassDefFoundError: com/vladium/emma/rt/RT.

If I include the jar file in this seperate project I get the same
issue. Even doing a clean of my project doesn't remove this stuff from
the completed JAR file. I'm not sure if I am going down the wrong path
either.


Eric Wohlstadter

unread,
Nov 26, 2011, 1:35:50 AM11/26/11
to cpsc41...@googlegroups.com
I've never seen this exact problem, so I don't know the solution off the top of my head.

However, as a start, have you tried changing the ports that your server is setup for?
You can change the ports if you double click on a specific server in the Servers tab on Eclipse. This will bring up a list of 3 ports that Tomcat uses. You can try changing any of them. Although if you change the HTTP port, you may need to change your application code if the port is embedded anywhere in your code.

Eric

Eric Wohlstadter

unread,
Nov 26, 2011, 1:39:34 AM11/26/11
to cpsc41...@googlegroups.com
Ok, it looks like someone else had this problem on this blog: http://youtrack.jetbrains.net/issue/TW-1149

He says, "I figured out the problem. As the exception says, the address EMMA was using was already in use. The reason was that one earlier test round was not completed succesfully and the process never died. "

If what he says is right, then you may have a runaway process which you need to kill.

Eric
Reply all
Reply to author
Forward
0 new messages