Sorted out a classloading issue that was introduced when we switched to Commons VFS 2.0 - basically it makes correct use of the context classloader, so we need to make sure we have the context loader set properly when we go to setup the liaison objects for the hosted service.

So, we're back to the state we were at with RiverSurrogate in the skunk branch, except that the container is now built with Maven and source-controlled with Git.

Container successfully starts Reggie.
diff --git a/river-container-core/src/main/java/org/apache/river/container/deployer/StarterServiceDeployer.java b/river-container-core/src/main/java/org/apache/river/container/deployer/StarterServiceDeployer.java
index 9d5ad17..036441f 100644
--- a/river-container-core/src/main/java/org/apache/river/container/deployer/StarterServiceDeployer.java
+++ b/river-container-core/src/main/java/org/apache/river/container/deployer/StarterServiceDeployer.java
@@ -245,7 +245,9 @@
         /*
          Setup the liaison configuration.
          */
+        ClassLoader originalContextCl=Thread.currentThread().getContextClassLoader();
         try {
+            Thread.currentThread().setContextClassLoader(cl);
             File workingDir = null;
             if (serviceArchive != null) {
                 workingDir = new File(serviceArchive.getURL().toURI());
@@ -270,19 +272,21 @@
                 String contextVarName = cfgEntryNode.jjtGetChild(1).toString();
                 Object contextValue = context.get(contextVarName);
                 if (contextValue != null) {
-                    invokeStatic(cl, configName, 
-                            Strings.PUT_SPECIAL_ENTRY, 
-                            new Class[] {String.class, Object.class}, 
+                    invokeStatic(cl, configName,
+                            Strings.PUT_SPECIAL_ENTRY,
+                            new Class[]{String.class, Object.class},
                             Strings.DOLLAR + varName, contextValue);
                 } else {
-                    log.log(Level.WARNING, MessageNames.MISSING_SPECIAL_VALUE, 
-                            new Object[] {getConfig(), varName, contextVarName});
-                } 
+                    log.log(Level.WARNING, MessageNames.MISSING_SPECIAL_VALUE,
+                            new Object[]{getConfig(), varName, contextVarName});
+                }
             }
         } catch (Exception ex) {
             log.log(Level.WARNING, MessageNames.EXCEPTION_THROWN, Utils.stackTrace(ex));
             throw new ConfigurationException(ex,
                     MessageNames.STARTER_SERVICE_DEPLOYER_FAILED_INIT);
+        } finally {
+            Thread.currentThread().setContextClassLoader(originalContextCl);
         }
     }
 
diff --git a/river-container-core/src/main/java/org/apache/river/container/liaison/VirtualFileSystemConfiguration.java b/river-container-core/src/main/java/org/apache/river/container/liaison/VirtualFileSystemConfiguration.java
index 1e5c51a..c84f8dd 100644
--- a/river-container-core/src/main/java/org/apache/river/container/liaison/VirtualFileSystemConfiguration.java
+++ b/river-container-core/src/main/java/org/apache/river/container/liaison/VirtualFileSystemConfiguration.java
@@ -18,11 +18,10 @@
 package org.apache.river.container.liaison;
 
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.Reader;
+import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.logging.Level;
@@ -33,7 +32,6 @@
 import net.jini.config.ConfigurationNotFoundException;
 import org.apache.commons.vfs2.FileObject;
 import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileSystemManager;
 import org.apache.commons.vfs2.VFS;
 
 /**
@@ -58,6 +56,10 @@
     @param workingDirectory
      */
     public static void setWorkingDirectory(File workingDirectory) {
+        /* Before we do anything, setup the class loader for the vfs manager.
+         */
+        
+        setManagerClassLoader();
         try {
             if (workingDirectory.isDirectory()) {
                 FileObject root = VFS.getManager().toFileObject(workingDirectory);
@@ -81,6 +83,17 @@
 
     }
 
+    private static void setManagerClassLoader() {
+        try {
+            Object mgr=VFS.getManager();
+            Method setter=mgr.getClass().getMethod("setClassLoader", new Class[] {ClassLoader.class});
+            setter.invoke(mgr, new Object[] {mgr.getClass().getClassLoader()});
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+        
+    }
+    
     public static FileObject getRootDirectory() {
         return rootDirectory;
     }
diff --git a/river-container-core/src/main/resources/META-INF/services/net.jini.config.Configuration b/river-container-core/src/main/resources/META-INF/services/net.jini.config.Configuration
new file mode 100644
index 0000000..04defc2
--- /dev/null
+++ b/river-container-core/src/main/resources/META-INF/services/net.jini.config.Configuration
@@ -0,0 +1 @@
+org.apache.river.container.liaison.VirtualFileSystemConfiguration
\ No newline at end of file