Now that I was able to create a first RCP (empty) application, let's try to understand how uDig is architectured. What is uDig? A GIS (Geographic Information System) framework for Eclipse. uDig provides low-level GIS functions I need to implement the solution I have in mind: display of cartographic data, layer handling, map projection handling, etc.
I first tried to use the same Eclipse Kepler environment that I previously installed. But I didn't succeed. So I went back to the supported versions, presented in uDig Quickstart guide. I'll try the merge with Kepler when I'm comfortable enough with RCP...
Following Quickstart guide instructions, I downloaded and used following files for installation:
At first uDig run, following messages are displayed:
Dec 13, 2013 9:59:49 PM org.geotools.referencing.factory.PropertyAuthorityFactory <init> WARNING: Axis elements found in a wkt definition, the force longitude first axis order hint might not be respected: PROJCS["Monte Mario / Italy zone 1 - Sicily/Accuracy 3-4m", GEOGCS["Monte Mario", DATUM["Monte Mario", SPHEROID["International 1924", 6378388.0, 297.0, AUTHORITY["EPSG","7022"]], TOWGS84[-50.2,-50.4,84.8,-0.690,-2.012,0.459,-28.08], AUTHORITY["EPSG","6265"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH], AUTHORITY["EPSG","4265"]], PROJECTION["Transverse_Mercator"], PARAMETER["central_meridian", 9.0], PARAMETER["latitude_of_origin", 0.0], PARAMETER["scale_factor", 0.9996], PARAMETER["false_easting", 1500000.0], PARAMETER["false_northing", 0.0], UNIT["m", 1.0], AXIS["Easting", EAST], AXIS["Northing", NORTH], AUTHORITY["EPSG","30031002"]] !SESSION 2013-12-13 21:59:44.993 ----------------------------------------------- eclipse.buildId=unknown java.version=1.6.0_25 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US Framework arguments: -product net.refractions.udig.product Command-line arguments: -product net.refractions.udig.product -data /home/pascalb/workspaceUDig/../runtime-udig.product -dev file:/home/pascalb/workspaceUDig/.metadata/.plugins/org.eclipse.pde.core/udig.product/dev.properties -os linux -ws gtk -arch x86 -consoleLog !ENTRY net.refractions.udig.ui 1 0 2013-12-13 21:59:52.096 !MESSAGE net.refractions.udig.ui.WorkbenchConfiguration "net.refractions.udig.internal.ui.UDIGWorkbenchConfiguration" specified but no valid extension found. Please check that the extension exists and that it is valid. !ENTRY net.refractions.udig.ui 1 0 2013-12-13 21:59:52.122 !MESSAGE net.refractions.udig.ui.MenuBuilder "net.refractions.udig.ui.uDigMenuBuilder" specified but no valid extension found. Please check that the extension exists and that it is valid. !ENTRY net.refractions.udig.catalog 4 0 2013-12-13 21:59:52.735 !MESSAGE Restoring Local Catalog !ENTRY org.eclipse.ui.intro 4 0 2013-12-13 21:59:53.565 !MESSAGE Could not load SWT style: css/shared.css !STACK 0 java.net.MalformedURLException: no protocol: css/shared.css at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at java.net.URL.<init>(Unknown Source) at org.eclipse.ui.internal.intro.impl.swt.SharedStyleManager.load(SharedStyleManager.java:66) at org.eclipse.ui.internal.intro.impl.swt.SharedStyleManager.<init>(SharedStyleManager.java:58) at org.eclipse.ui.internal.intro.impl.presentations.FormIntroPartImplementation.<init>(FormIntroPartImplementation.java:94) at org.eclipse.ui.internal.intro.impl.model.IntroPartPresentation.createPartControl(IntroPartPresentation.java:257) at org.eclipse.ui.intro.config.CustomizableIntroPart.createPartControl(CustomizableIntroPart.java:204) at org.eclipse.ui.internal.ViewIntroAdapterPart.createPartControl(ViewIntroAdapterPart.java:99) at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375) at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.Perspective.showView(Perspective.java:2245) at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1145) at org.eclipse.ui.internal.WorkbenchPage$20.run(WorkbenchPage.java:3921) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3918) at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3894) at org.eclipse.ui.internal.WorkbenchIntroManager.createIntro(WorkbenchIntroManager.java:173) at org.eclipse.ui.internal.WorkbenchIntroManager.showIntro(WorkbenchIntroManager.java:120) at org.eclipse.ui.application.WorkbenchWindowAdvisor.openIntro(WorkbenchWindowAdvisor.java:209) at org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow.java:817) at org.eclipse.ui.internal.Workbench$24.runWithException(Workbench.java:1243) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212) at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803) at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1600) at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2609) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at net.refractions.udig.internal.ui.UDIGApplication.start(UDIGApplication.java:132) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
But uDig starts OK.
I download a shapefile zip file from CloudMade. To add corresponding layers to uDig, after having extracted the contents of the downloaded archive:
Now, we have a working GIS that we can tailor to suit our needs...
Right-click on udig.product and select Export... > Plug-in Development > Eclipse product. In next window, set Root directory to udig, and set Destination Directory. Click on Finish.
This creates a udig directory into the destination directory you selected. Inside this directory, double-clicking on udig_internal returns an error message:
JVM terminated. Exit code=13 /usr/bin/java -Xmx386M -Dosgi.parentClassloader=ext -Dorg.eclipse.emf.ecore.plugin.EcorePlugin.doNotLoadResourcesPlugin=true -XX:MaxPermSize=256m -jar /home/pascalb/Temp/udig//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -os linux -ws gtk -arch x86 -showsplash -launcher /home/pascalb/Temp/udig/udig_internal -name Udig_internal --launcher.library /home/pascalb/Temp/udig//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.100.v20110505/eclipse_1407.so -startup /home/pascalb/Temp/udig//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.overrideVmargs -exitdata 218012 -vm /usr/bin/java -vmargs -Xmx386M -Dosgi.parentClassloader=ext -Dorg.eclipse.emf.ecore.plugin.EcorePlugin.doNotLoadResourcesPlugin=true -XX:MaxPermSize=256m -jar /home/pascalb/Temp/udig//plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
That's more or less the error message I got when I tried to run uDig using Kepler...
For now, I copy the jre directory downloaded from uDig web site to the udig directory, and try again. This time, it works.
The size of the udig tree hierarchy is 406 MB.