There's a race condition between start and create methods of Activator. If a bundle that was started before activemq-core does something that causes a call to Activator.create, and Activator.start is still scanning bundles for contributed service files, an IOException results.
In practice, this occurred after upgrading from 5.3.0 to 5.3.2 because another bundle at the same start level as activemq-core programmatically instantiated a broker from a different thread. The activemq-core activator was still scanning the installed bundles and hadn't gotten to itself yet, so the result was a failure to instantiate the tcp handler.
Making start/create/stop synchronized would fix this issue.