Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java11运行main方法类_Java_Main - Fatal编程技术网

如何使用Java11运行main方法类

如何使用Java11运行main方法类,java,main,Java,Main,我有一个Test.java源代码文件 class Test{ public static void main(String args[]){ System.out.println("works); } } 它很好用。如果Test.java源代码文件有两个类,如Test和Test1 class Test { public static void m1(){ System.out.println(" m1 "); } } class

我有一个Test.java源代码文件

class Test{
    public static void main(String args[]){
        System.out.println("works);
   }
}
它很好用。如果
Test.java
源代码文件有两个类,如
Test
Test1

class Test {
    public static void m1(){
        System.out.println(" m1 ");
    }
}

class Test1 {
    public static void main(String args[]){
        System.out.println(" works ");
    }
}
它抛出了一个异常:

错误:在类:Test中找不到main(String[])方法


那么,有没有办法直接编译和运行包含两个类的java程序?

您需要切换类定义的位置:

类测试{
公共静态void main(字符串参数[]){
Test1.m1();
System.out.println(“工程”);
}
}
类Test1{
公共静态void m1(){
系统输出打印项次(“m1”);
}
}
这样你的代码就可以工作了

正如您在示例中所看到的,您可以从main方法调用
Test1.m1()
,您可以看到输出。

我尝试了,它成功了
如果一个源代码文件中有多个类,那么我们需要将类放在包含main(String args[])方法的源文件的开头。

Java源文件不应该包含两个类(至少不是两个顶级类)。@ElliottFrisch有趣的是,编译模式中的读取,源文件应包含一个或多个顶级类,其中第一个类作为要执行的类。@Ghanshyam但同一JEP也读取,如果应用程序类路径上有一个类的名称与要执行的类的名称相同,则为错误。由于您正在执行的不是顶级类的
test.java
,您的测试可能就是这样。但是这里的问题仍然是如何执行
Test1
。同一文档中关于执行的另一个注释是,要执行的类是在源文件中找到的第一个顶级类。它必须包含标准公共静态void main(String[])方法的声明。。问:有办法指定这个类吗?
main()
应该包含在与文件名相同的类中。@ElliotFrisch我真的看不到包的点可见两行mapstruct mapper或Lombok数据类定义,这些定义只在一个单独的文件中声明。可以确认,就是这样。带有
main
的类,无论其名称是什么,都应该是源文件的第一个类,以实现此功能。但如果我可以显式地指定一个类名的话,情况会好得多。不是吗?@Naman此功能的目标是允许
.java
类像脚本文件一样运行。需要另一个参数参数才能工作,比如类名,这与该目标相矛盾。如果配置正确,我可以通过双击桌面来运行
.java
文件。需要一个类名是没有帮助的。@Holger需要另一个参数参数来工作,就像类名一样,这与它可能达到的目标相矛盾,我同意。如果配置正确,我可以通过双击桌面来运行.java文件。我不确定这里的配置,但我认为这些配置也可以通过附加参数进行调整。是的,所有这些最终都会与目标相矛盾。但有点太奇怪了,运行源文件作为
java Test.java
,会在该文件中执行
Test1
类,这取决于文件中类的顺序。@Naman我只为每个
.java
文件配置了一次双击行为。为每个文件添加可能不同的类名是行不通的。那么,可以讨论运行第一个类而不是具有匹配名称的类(这是唯一可以是
public
)的顶级类的决定。但更重要的一点是要有一个一致的规则。而且,在java文件中,要像脚本一样工作,我的
main
方法将是第一个类中的第一件事,因此在文本编辑器中打开文件时,我会立即看到它。
class Test {
    public static void m1(){
        System.out.println(" m1 ");
    }
}

class Test1 {
    public static void main(String args[]){
        System.out.println(" works ");
    }
}
java Test.java