JAVA程序可以通过编译,但是运行时报错NoSuchMethodError,求解!

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class pandacount3 extends JFrame{
ArrayList<JLabel> panda;
JPanel a,b,c;
JLabel q;
JTextField t;
JButton check;
ImageIcon img;
ActionListener listener;
int i,max;
public pandacount3(){
a = new JPanel();
img = new ImageIcon("panda.jpg");
panda = new ArrayList<JLabel>();
a.setLayout(new GridLayout(0,5));
for(i=0; i<max; i++){
panda.add(new JLabel(img));
a.add(panda.get(i));
}
b = new JPanel();
t = new JTextField(2);
q = new JLabel("How many Pandas can you see?");
b.add(q);
b.add(t);
c = new JPanel();
check = new JButton("Check!");
c.add(check);
add(a, BorderLayout.NORTH);
add(b, BorderLayout.CENTER);
add(c, BorderLayout.SOUTH);
listener = new Listener();
check.addActionListener(listener);

}
public void main(String Args[]){
max = Integer.parseInt(Args[0]);
pandacount3 f = new pandacount3();
f.setTitle("Welcome to PandaLand!");
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400,300);
f.setVisible(true);
}
public class Listener implements ActionListener{
public void actionPerformed(ActionEvent event){
if((t.getText())!=null){
int j = Integer.parseInt(t.getText());
if(j==i){
q.setText("Correct! How many Pandas can you see now?");
a.removeAll();
i = (int)(Math.random()*max+1);
for(int k = 0;k<i;k++){
a.add(panda.get(k));
}
a.updateUI();
}
else{q.setText("Wrong! Try again!");}
}
}
}
}
我按 3楼的方法改了 还是编译通过 运行不了

第1个回答  2010-06-01
老大 你的入口函数 main 少些了一个修饰符 static
另外你需要将max声明为static变量 否则在编译将不能通过
第2个回答  2010-06-01
构造函数改为 public pandacount3(int max){
this.max=max;}
主函数要加 static
public static void main(String Args[]){

pandacount3 f = new pandacount3(Integer.parseInt(Args[0]));本回答被提问者采纳
第3个回答  2010-06-01
public static void main(String[] args){

}
程序的入口,检查程序中是否有该函数

Java问题解决录: 运行时抛出NoSuchMethodError \/ NoSuchFieldError异常...
在IDE中编译运行程序无异常,但在打包成可运行的jar包(如Spring Boot jar包)后,程序运行时会抛出NoSuchMethodError或NoSuchFieldError异常。问题定位步骤 通过增加JVM参数如-verbose:class、-XX:+TraceClassLoading或-Xlog:class+load=debug来查看类的加载情况。使用Arthas工具的jad命令可以查看已加载类的源码...

java程序编译没问题,运行时出了问题
在java中,有一种异常就叫做运行时异常,在编译时是没有错误的,运行时才会抛出。你没有源代码,没有办法检查。如果是web工程,你可以重新发布一下,再运行。希望能帮你!!!

这个JAVA程序为什么能通过编译而不能执行???
class HelloWorld 或者 Exception in thread "main" java.lang.NoSuchMethodError: main.为什么呢? 编译好的 class 明明在呀. 我们一起来看一看 java 程序的运行过程. 我们已经知道 java 是通过 java虚拟机来解释运行的, 也就是通过 java 命令, javac 编译生成的 .class文件就是虚拟机要执行的代码, 称之为字节...

...in thread“main”java.lang.NoSuchMethodError:main错误...
main()方法必须写在public类中 你的School类不是public类,因此虚拟机在public类中是找不到你的main()方法的。另外,整个程序的文件名必须是你的public类名.java ;你的程序可改成:package ldz;public class Student{ private String no;String name;public char sex;void setNo(String no){ this....

nosuchmethoderror的问题怎么解决
mvn install 到本地后,执行 mvn jarconflict:check 就可以在web工程中检查所有jar包中的class,如果发现重复就报错。如果线上已经出现该问题,需要进行定位,解决的方法有以下几种:1、挂jconsole、jvisualvm、jinfo等工具到启动的java进程,查看jvm的classpath。但这种方法有个局限:如果是web程序运行在...

...in thread "main" java.lang.NoSuchMethodError:main 这是什么问...
你 写的是applet的,不是application ,applet是不是直接运行的,要在html中加载运行 比如:

java 中出现 nosuchmethoderror 问题
你的程序出现的问题是:没有入口的main()函数。下面是我在你的代码的基础上修改好的程序,你再运行吧,没有了问题了……class stringdemo{ public static void main(String[] args) { String myname="yang";myname = myname +"fan";char[] A = new char[myname.length()];for(int i=0;...

java.lang.nosuchmethoderror是什么错误mq
出现这种问题一般是因为有不同版本的类,导致jvm不知道选择哪一个方法,直接报错 解决方案:在异常中找到该类,通过类的全名再项目中查找出该类,一般有多个地方,找到之后,就可以选择去掉其中一个。有时候也会出现在被重写的类中,处理方法类似 ...

...in thread "main" java.lang.NoSuchMethodError: main
两种可能 1.你的Sort类没有写main方法 2.你的Sort类使用了包名。你编译和运行都没有加包名

编译出现java.lang.NoSuchMethodError: main
程序本身没问题,初步估计应该是jdk的配置问题,试着把你的环境变量path中jdk配置放到最前面,并在前面加上 `.;`引号中内容

相似回答