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
}