在目录层次结构中找不到Java类

在目录层次结构中找不到Java类,java,Java,我在运行java程序时遇到以下错误: Error: Could not find or load main class Gen 我有以下目录结构: 运行程序的当前目录包含目录层次结构: classes/gensig/gen和classes/gensig/util。在这个目录中,我有我需要的类 我想从classes/gensig/Gen运行Gen类。在classes/gensig/util中,我在Gen类中调用了一些类 我像这样运行程序,但我得到了我提到的错误: java-cp-classe

我在运行java程序时遇到以下错误:

Error: Could not find or load main class Gen
我有以下目录结构:

  • 运行程序的当前目录包含目录层次结构: classes/gensig/gen和classes/gensig/util。在这个目录中,我有我需要的类
  • 我想从classes/gensig/Gen运行Gen类。在classes/gensig/util中,我在Gen类中调用了一些类
  • 我像这样运行程序,但我得到了我提到的错误:
java-cp-classes/gensig/gen/*.class:classes/gensig/util/*.class-gen


感谢您的帮助。

类路径必须包含构成包树根的目录或jar文件(即,构成默认包的目录,以及包含顶级包目录的目录)

在您的例子中,该类似乎被称为
Gen
,并且位于包
gensig.gensig
中。因此,它的名称是
gensig.gensig.Gen
。包树的根目录是目录
classes
。因此,命令应该是:

java -cp classes gensig.gensig.Gen
编辑:根据您的评论,您的类实际上在包
gen
中。因此,包树的根是
classes/gensig
。所以命令应该是

java -cp classes/gensig gen.Gen

当我在线程“main”java.lang.NoClassDefFoundError:gensig/gen/gen(错误名称:gen/gen)中使用上述异常命令时,我遇到了这个错误。我还需要包括util中的类。我该怎么做呢?因为包/目录树(
classes
)的根在类路径中,所以包含了
util
中的类<找不到code>CorviGen,因为它在包
gensig.gen
中,并且在类下没有任何对应的目录。您是否理解包树必须与目录树匹配?如果你被卡住了,发布你所有类的代码(从package语句到类的声明),并告诉我们你用来编译它们的命令。我使用了命令,你说‘java-cp classes gensig.gen.gen’,但我仍然得到错误‘java.lang.NoClassDefFoundError:gensig/gen/gen(错误名称:gen/gen)’你读过我的答案吗?该命令是
java-cp类gensig.gensig.Gen
。不是
java-cp类gensig.gen.gen
。必须传递类的完全限定名。就这么简单。完全限定的名称是类的包,后跟一个点,后跟类的简单名称。包结构必须与目录结构完全匹配。如果没有关于您的代码的更多信息,我们将无能为力。它的工作原理如下java-cp classes/gensig gen.gen。在gensig旁边的classes目录中,我有其他包含类的目录,使用-cp classes/gensig对我有用。非常感谢您的帮助。
Gen
class的包名是什么?包名是Gen for Gen class。