【问题标题】:exception in thread "main" java.nosuchmethoderror:main [duplicate]线程“main”中的异常 java.nosuchmethoderror:main [重复]
【发布时间】:2012-08-25 23:13:27
【问题描述】:

可能重复:
Causes of 'java.lang.NoSuchMethodError: main Exception in thread “main”'

我是java新手。我想写一个程序来交换2个号码。
我在上面写了 2 个程序。一个正在运行,另一个没有。
我无法理解未运行程序的错误。请帮助我理解我的错误。
这里我给你两个程序以及输出。

正在运行的程序:

public class SwapElementsExample {


public static void main(String[] args) {

int num1 = 10;
int num2 = 20;

System.out.println("Before Swapping");
System.out.println("Value of num1 is :" + num1);
System.out.println("Value of num2 is :" +num2);
swap(num1, num2); 
}

private static void swap(int num1, int num2) {  
int temp = num1;  
num1 = num2;  
num2 = temp;  

System.out.println("After Swapping");
System.out.println("Value of num1 is :" + num1);
System.out.println("Value of num2 is :" +num2);
}
}

输出是:

交换前
num1 的值为:10
num2 的值为:20
交换后
num1 的值为:20
num2 的值为:10

在上述程序中我没有任何问题。
但是在下一个程序中我找不到什么故障。
请帮我找出错误。

class Swap  
{  
public static void main(int a, int b)  
{  
int c=0;  
c=b;  
b=a;  
a=c;  
c=0;  
System.out.println(a);  
System.out.println(b);  
}  
}  

在执行中没有错误消息。
但在运行时有一个错误消息,那就是:
线程“main”中的异常 java.nosuchmethoderror:main

请告诉我这个程序的问题。


【问题讨论】:

    标签: java


    【解决方案1】:

    public static void main(int a, int b) 不正确。

    它必须是: public static void main(String[] args)。这是根据定义。

    如果要获取第一个和第二个参数:

    int a = Integer.parseInt(args[0]);
    int b = Integer.parseInt(args[1]);
    

    【讨论】:

    • 是的……我明白了……谢谢你的朋友……:)
    【解决方案2】:

    问题出在这里

    public static void main(int a, int b) 
    

    Java 总是从您在第一个示例代码中声明的 main 方法开始执行程序。

    【讨论】:

    • 好的,我明白了...谢谢你的朋友... :)
    • 澄清一下:main 方法的原型总是需要一个参数,它的类型是String[]
    【解决方案3】:

    当您启动 java 应用程序时,java 解释器会尝试查找方法

    public static void main(String[] args)
    

    运行应用程序。

    在一个类中,您可以声明多个具有相同名称但获得的参数不同的方法。像这样:

    public static void main(String[] args) {
    
    }
    
    public static void main(int a, int b) {
    
    }
    
    public static void main(float a, float b) {
    
    }
    

    所有这些方法都将被编译器接受。因为每个方法都不是仅仅通过它的名字来识别的,而是通过它的名字和签名来识别的。签名基于您传递给方法的参数。每个参数的类型和参数序列都是签名体。

    因此,当您在没有 public static void main(String[] args) 方法的情况下启动应用程序时,解释器无法找到具有预期签名 String[] argsmain 方法,并引发异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-07
      • 2011-07-07
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      相关资源
      最近更新 更多