我如何找到主类?入口点?

rem*_* me 0 java compilation

我从应用程序中获取了为我生成的Java代码.我拿了JRE并将所有文件解压缩到一个新目录中.有一个META-INF文件夹,它有一个没有任何main方法的MANIFEST.MF.

Witin这个JRE是我感兴趣的代码类,但是当我CMD以下时...

java Steve.class

我收到这个错误......

Could not load for find Main Class Steve.class. 
Run Code Online (Sandbox Code Playgroud)

我假设在所有这些类文件中的某个地方有一个Main类但是如何搜索所有这些文件来找到它?有申请吗?

谢谢!

dog*_*ane 6

.class调用Java程序时不需要后缀.像这样做:

java Steve
Run Code Online (Sandbox Code Playgroud)

要确定哪个类有main方法,可以javap在每个类文件上使用(Java类文件反汇编程序).例如:

$ javap Foo
Compiled from "Foo.java"
public class Foo extends java.lang.Object{
    public Foo();
    public static void main(java.lang.String[]);
}
Run Code Online (Sandbox Code Playgroud)


And*_*oni 5

第一:公开此方法签名的每个类:

public static void main(String[] args) { }
Run Code Online (Sandbox Code Playgroud)

可以是可从 JVM 启动的主类,并且有资格放入清单以启用 shell 执行。

第二:当你在 JRE 中启动一个类时,你必须指定类的全限定名;例如,如果 Steve.class 文件位于 com/mycompany/app 之类的树结构中,则从应用程序的根目录开始,其中 MANIFEST 目录,您应该从根目录启动它,键入:

java com.mycompany.app.Steve
Run Code Online (Sandbox Code Playgroud)

因此,如果 Steve 公开了一个 main 方法,并且您可以从根正确地指向它,那么您就可以启动它。