Java 错误:无法找到或加载主类<;类名>;

Java 错误:无法找到或加载主类<;类名>;,java,main,Java,Main,汇编: package demo; import java.io.*; class A { public void run() { System.out.println("This Is Class A : public void run()"); } } class B { public static void main(String args[]) { System.out.println("Main Method Ex

汇编:

package demo;
import java.io.*;
class A
{
    public void run()
    {
        System.out.println("This Is Class A : public void run()");
    }
}
class B
{
    public static void main(String args[])
    {
        System.out.println("Main Method Executed");
        A obj1 = new A();
        obj1.run();
    }
}
--->在目录demo[A.class,B.class]中创建类文件

d:\java>javac -d . demo.java
但是如果我删除第1行[package demo;],它就会正常运行。
因此,当我们使用包名时,为什么会生成“错误:无法找到或加载主类B”错误。

应该如下所示,因为您已经声明了包结构,并且类文件应该位于这样的文件夹结构中。正如在A.class中一样,应该在演示文件夹中

Run : d:\java>java B
Error: could not find or load main class B
另外,您似乎在类B中有main方法,所以您必须执行类B而不是类A


您应该将demo.java重命名为B.java并使用

>java demo/B
而不是

public class B
假设B.class位于C:\

要编译B.java,请键入

class B
这将创建一个名为“demo”的文件夹,其中包含两个名为a.class和B.class的类文件

要执行程序,请键入

C:\javac -d . B.java
以下是该计划的结果:

C:\demo\java demo.B

运行此命令。因为主方法在B类中。包的名称是
demo
,包含main方法的类是
B

Main Method Executed
This Is Class A : public void run()

输出:
执行的主方法
这是A类:公共作废运行()

但是如果我删除第1行[package demo;],它就会正常运行


这是因为当您在程序中提供包声明时,类就驻留在包中。因此,您需要提供从包访问它们的完整路径。

假设您的Main类驻留在controller包中。如果您正在使用Gradle构建和测试应用程序,请确保build.Gradle文件中有以下行:

java demo.B

注意:controller是我的包的名称。我的Main类位于controller包中,它工作良好,甚至可以作为独立应用程序执行。请记住更改主类所在位置的包的名称。

尝试从以下内容开始:
java demo.A
谢谢,我完成了。但是如果我像这样进入包目录,但如果我像>cd demo[设置当前目录'd:\java\demo>']那样进入包目录,我会尝试>java B,然后在B.class位于demo[package]目录时也会给出“error cannot find or load main class B”。@KumarHarsha我从来没有说过要进入目录。只需在编译代码后运行该命令。您在此处发布的原件。@KumarHarsha您接受的答案要求您更改两件事。不要将任何内容更改为原始代码。使用粘贴的命令编译,然后使用答案中的“我的命令”运行。是的,您的答案是正确的。。。我就是这样做的。但当我在包目录下运行>JavaB时,我遇到了一些问题。但它也有同样的错误,请帮助。它是如何工作的。
java demo.B
jar {
    manifest {
      def classpath = configurations.runtime.collect { jarfile ->
        '../lib/' + jarfile.getName()
      }.join(' ')

       attributes 'Main-Class': 'controller.Main', 'Class-Path': classpath, 'Implementation-Version': version
    }
}

task runit(type: JavaExec) {
    main 'controller.Main'
    classpath = sourceSets.main.runtimeClasspath
}