Ah, found it I think. I tried to emulate your settings which meant taking
all the geotools jars off the classpath and now it works fine. I guess there
is a jar file in there which is causing problems (not sure what 'causing
problems' means yet, but if I find out I'll post here for info).

Thanks for your help!

Nick

P.S.
When I press 'stop' on the campus world model I get the following exception,
although the model keeps running. Not tried to debug this yet but thought
I'd post it FYI.

Error in ShapeFileExporter:write: 
java.nio.BufferOverflowException
	at java.nio.Buffer.nextPutIndex(Buffer.java:499)
	at java.nio.HeapByteBuffer.putDouble(HeapByteBuffer.java:500)
	at sim.io.geo.ShapeFileExporter.write(ShapeFileExporter.java:230)
	at sim.app.geo.campusworld.CampusWorld.finish(CampusWorld.java:154)
	at sim.display.GUIState.finish(GUIState.java:329)
	at sim.display.Console.pressStop(Console.java:2157)
	at sim.display.Console.pressStopMaybe(Console.java:2116)
	at sim.display.Console$3.actionPerformed(Console.java:322)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
	at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6382)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
	at java.awt.Component.processEvent(Component.java:6147)
	at java.awt.Container.processEvent(Container.java:2083)
	at java.awt.Component.dispatchEventImpl(Component.java:4744)
	at java.awt.Container.dispatchEventImpl(Container.java:2141)
	at java.awt.Component.dispatchEvent(Component.java:4572)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
	at java.awt.Container.dispatchEventImpl(Container.java:2127)
	at java.awt.Window.dispatchEventImpl(Window.java:2489)
	at java.awt.Component.dispatchEvent(Component.java:4572)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:704)
	at java.awt.EventQueue.access$400(EventQueue.java:82)
	at java.awt.EventQueue$2.run(EventQueue.java:663)
	at java.awt.EventQueue$2.run(EventQueue.java:661)
	at java.security.AccessController.doPrivileged(Native Method)
	at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:677)
	at java.awt.EventQueue$3.run(EventQueue.java:675)
	at java.security.AccessController.doPrivileged(Native Method)
	at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
	at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)