NoClassDefFoundError错误发生的原因
NoClassDefFoundError和ClassNotFoundException区别
怎么解决NoClassDefFoundError错误
如何解决"找不到或无法加载主类" ==> 找不到 class文件
JAVA,类StaticInitDemo是公共的,应在名为StaticInitDemo.java的文件中声明
==>JAVA的类文件名,如果里面有pulbic类,那这个java文件名一定和这个public名字相同。一个JAVA文件里面有且只有一个public的class的。
错误:在类MyClass中找不到主方法,请将主方法定义为public static void main(String [] args)
==>
当您使用java
命令从命令行运行Java应用程序,例如,
java some.AppName arg1 arg2 ...
该命令加载您指定的类,然后查找调用的入口点方法。main
..更具体地说,它正在寻找一种声明如下的方法:
package some;public class AppName { ... public static void main(String[] args) { // body of main method follows ... }}
入境点法的具体要求是:
方法必须在指定的类中。
方法的名称必须是“main”
一点儿没错
资本化
1.
方法必须是
public
.方法必须是
static
2.方法的返回类型必须是
void
.该方法必须有一个参数,并且参数的类型必须是
String[]
3.
(论点)
可以,可能使用varargs语法声明;String... args
..看见
这个问题想了解更多信息。这个String[]
参数用于从命令行传递参数,即使应用程序不使用命令行参数,也是必需的。)
如果上述任何一项要求没有得到满足,java
命令将在消息的某些变体中失败:
Error: Main method not found in class MyClass, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
或者,如果您正在运行一个 极Java的旧版本:
java.lang.NoSuchMethodError: main Exception in thread "main"
如果遇到此错误,请检查是否有main
方法,并使其满足上述所有6项要求。
其中一个很难理解的变化是,当“main”中的一个或多个字符不是拉丁文-1字符时.但是一个Unicode字符 看上去显示时相应的拉丁文-1字符。
2-见 为什么Java Main方法是静态的?以解释为什么要求该方法是静态的。
3 - String
必须对应于java.lang.String
而不是名为String
把它藏起来。
参考:
http://www.imooc.com/wenda/detail/567430
可否将两个class写在一个文件中?
可以的,java中class的写法有4种,第一种是public class
XXX{},第二种是非public类,例如:
public class A{}
class B{}
第二个class前面不能加public,
第三种是内部类,写在公共类体里面的,例如:
public class A{
private class B{}
}
只有A能调用B,
第四种是匿名内部类,一般在awt编程中比较多,位于方法体内部,一般用于只调用一次或者只有这个方法调用,例如:
public class A{
public void c(){
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
匿名内部类没有类名,在方法体内部声明,该例子是awt中的窗口关闭监听器,用于监听鼠标是否触发Window的关闭按钮