为了账号安全,请及时绑定邮箱和手机立即绑定

错误:找不到或加载主类

错误:找不到或加载主类

侃侃尔雅 2019-06-14 16:37:50
错误:找不到或加载主类我在编译和运行我的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);             }         }
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-06-14
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

如果类在包中

package thepackagename;public class TheClassName {
  public static final void main(String[] cmd_lineParams)  {
     System.out.println("Hello World!");
  } }

然后打电话:

java -classpath . TheClassName

结果Error: Could not find or load main class TheClassName..这是因为必须使用其完全限定的名称调用它:

java -classpath . thepackagename.TheClassName

而这个thepackagename目录必须存在于类路径中。在这个例子中,.,即当前目录,是类路径的全部。因此,必须从thepackagename存在。

要明确的是,这个类的名称不是TheClassName,它是thepackagename.TheClassName..试图执行TheClassName不起作用,因为不存在具有该名称的类。..至少在当前的类路径上没有。

最后,请注意已编译的(类)版本是执行的,而不是源代码(.java)版本。因此“CLASSPATH”


查看完整回答
反对 回复 2019-06-14
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

当您收到错误时,可以尝试这两种方法:“无法找到或加载主类”

如果您的类文件保存在下面的目录中HelloWorld节目名称d:\sample

  1. java -cp d:\sample HelloWorld

  2. java -cp . HelloWorld


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 623 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信