猿问

错误:找不到或加载主类

错误:找不到或加载主类

我在编译和运行我的Java代码时遇到了困难,目的是允许我为Vensim提供一个共享对象,这是一个模拟建模包。

以下代码编译时没有错误:

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

我得到以下错误:“错误:找不到或加载主类空间模型”。我的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);
            }
        }


侃侃尔雅
浏览 624回答 3
3回答

30秒到达战场

必须确保添加.class归档到你的类路径。因此,如果它位于当前文件夹中,则添加.到你的类路径。注意,Windows类路径分隔符是一个分号,即;.

潇潇雨雨

如果类在包中package&nbsp;thepackagename;public&nbsp;class&nbsp;TheClassName&nbsp;{ &nbsp;&nbsp;public&nbsp;static&nbsp;final&nbsp;void&nbsp;main(String[]&nbsp;cmd_lineParams)&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Hello&nbsp;World!"); &nbsp;&nbsp;}&nbsp;}然后打电话:java&nbsp;-classpath&nbsp;.&nbsp;TheClassName结果Error: Could not find or load main class TheClassName..这是因为必须使用其完全限定的名称调用它:java&nbsp;-classpath&nbsp;.&nbsp;thepackagename.TheClassName而这个thepackagename目录必须存在于类路径中。在这个例子中,.,即当前目录,是类路径的全部。因此,必须从thepackagename存在。要明确的是,这个类的名称不是TheClassName,它是thepackagename.TheClassName..试图执行TheClassName不起作用,因为不存在具有该名称的类。..至少在当前的类路径上没有。最后,请注意已编译的(类)版本是执行的,而不是源代码(.java)版本。因此“CLASSPATH”

慕尼黑8549860

当您收到错误时,可以尝试这两种方法:“无法找到或加载主类”如果您的类文件保存在下面的目录中HelloWorld节目名称d:\samplejava -cp d:\sample HelloWorldjava -cp . HelloWorld
随时随地看视频慕课网APP
我要回答