title: Error: Could not find or load main class
body: <p>I am having trouble compiling and running my Java code, intended to allow me to interface Java with a shared object for Vensim, a simulation modeling package.</p>
  
  <p>The following code compiles without error:</p>
  
  <pre><code>javac -d . -cp ./apache-log4j-1.2.16/log4j-1.2.16.jar:./vensim.jar SpatialModel.java     VensimHelper.java VensimException.java VensimContextRepository.java
  </code></pre>
  
  <p>However, when I try to run the following:</p>
  
  <pre><code>java -cp ./apache-log4j-1.2.16/log4j-1.2.16.jar:./vensim.jar SpatialModel vars
  </code></pre>
  
  <p>I get the following error: "Error: Could not find or load main class SpatialModel
  ".  My SpatialModel.java code does contain a 'main' method (below), so I'm not sure what the problem is - can anyone please help me out?  Thanks.</p>
  
  <pre><code>import java.io.File;
  import java.text.NumberFormat;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.List;
  
  import org.apache.log4j.Logger;
  
  public class SpatialModel {
  
      private VensimHelper vh;
  
      public static final String DLL_LIBNAME_PARAM = "vensim_lib_nam";
  
      public static final String MODEL_PATH_PARAM = "vensim_model_path";
  
      private final static int VENSIM_CONTEXT_CREATION_MAX_FAILURE_COUNT = 10;
  
      public SpatialModel() throws SpatialException {
  
          String libName = System.getProperty(DLL_LIBNAME_PARAM);
          String modelPath = System.getProperty(MODEL_PATH_PARAM);        
  
          if(libName == null || libName.trim().equals("")) {
              log.error("Vensim library name has to be set with -D" + DLL_LIBNAME_PARAM);
              throw new SpatialException("Vensim library name has to be set with -D" + DLL_LIBNAME_PARAM);
          }
  
          if(modelPath == null || modelPath.trim().equals("")) {
              log.error("Model path has to set with -D" + MODEL_PATH_PARAM);
              throw new SpatialException("Model path ahs to be set with -D" + MODEL_PATH_PARAM);
          }
  
          for (int i = 0; i &lt; VENSIM_CONTEXT_CREATION_MAX_FAILURE_COUNT &amp;&amp; vh == null; i++) {
              try {
                  log.info("creating new vensim helper\n\tdll lib: " + libName + "\n\tmodel path: " + modelPath);
                  vh = new VensimHelper(libName, modelPath);
              } catch (Throwable e) {
                  log.error("An exception was thrown when initializing Vensim, try: " + i, e);
              }
          }
          if (vh == null) {
              throw new SpatialException("Can't initialize Vensim");
          }
  
      }
  
      public static void main(String[] args) throws VensimException {
  
          long before = System.currentTimeMillis();   
          String libName = System.getProperty(DLL_LIBNAME_PARAM);
          String modelPath = System.getProperty(MODEL_PATH_PARAM);
  
          if (libName == null) {
              libName = "libvensim";
          }
          if(modelPath == null) {
              modelPath = "~/BassModel.vmf";
          }
  
          System.setProperty(DLL_LIBNAME_PARAM, libName);
          System.setProperty(MODEL_PATH_PARAM, modelPath);
  
          if (args.length &gt; 0 &amp;&amp; args[0].equals("info")) {
              System.out.println(new VensimHelper(libName, modelPath).getVensimInfo());
          } else if (args.length &gt; 0 &amp;&amp; args[0].equals("vars")) {
              VensimHelper helper = new VensimHelper(libName, modelPath);
              String[] vars = helper.getVariables();
              for (String var : vars) {
                  System.out.println(helper.getVariableInfo(var));
              }
          } else {
  
              File f = new File(".");
              System.out.println(f.getAbsolutePath());
  
              SpatialModel sm = new SpatialModel();
          }
  
          System.out.println("Execution time: " + (System.currentTimeMillis() - before));
      }
  
  }
  </code></pre>