发布日期:2018-03-26
Error: Could not find or load main class SpatialModel+ 查看更多
Error: Could not find or load main class SpatialModel
+ 查看更多
发布日期:2018-03-08 17:32
分类:JAVA
浏览次数:192
我在编译和运行我的Java代码时遇到问题,使用Vensim(一个模拟建模包)的共享对象作为Java的接口。
以下代码编译通过:javac -d . -cp ./apache-log4j-1.2.16/log4j-1.2.16.jar:./vensim.jar SpatialModel.java VensimHelper.java VensimException.java VensimContextRepository.java
但是,当我尝试运行以下代码:
java -cp ./apache-log4j-1.2.16/log4j-1.2.16.jar:./vensim.jar SpatialModel vars我得到以下错误:“Error: Could not find or load main class SpatialModel”。 我的SpatialModel.java代码确实包含一个main方法(在下面),所以我不知道是什么问题 - 有人可以帮助我吗? 谢谢。
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 < VENSIM_CONTEXT_CREATION_MAX_FAILURE_COUNT && 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 > 0 && args[0].equals("info")) { System.out.println(new VensimHelper(libName, modelPath).getVensimInfo()); } else if (args.length > 0 && 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)); } }
回答
你必须确保将.class文件的位置添加到classpath中。 所以,如果它在当前文件夹中,那么添加.到你的classpath。 注意,Windows classpath分隔符是一个分号;