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

时间:2012-01-25 08:31:44

标签: java compilation

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

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

  

java Steve.class

我收到此错误...

Could not load for find Main Class Steve.class. 

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

谢谢!

2 个答案:

答案 0 :(得分:6)

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

java Steve

要确定哪个类具有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[]);
}

答案 1 :(得分:2)

首先:每个公开此方法签名的类:

public static void main(String[] args) { }

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

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

java com.mycompany.app.Steve

因此,如果Steve公开了一个main方法,并且你可以从root中正确指出它,你可以启动它。