Как мне найти основной класс?Точка входа? - PullRequest
0 голосов
/ 25 января 2012

Я получаю Java-код, сгенерированный для меня из приложения.Я взял JRE и извлек все файлы в новый каталог.Существует папка META-INF с файлом MANIFEST.MF без какого-либо основного метода.

Witin это JRE - класс кода, который меня интересует, однако, когда я CMD следующее ...

java Steve.class

Я получаю эту ошибку ...

Could not load for find Main Class Steve.class. 

Я предполагаю, что где-то во всех этих файлах классов есть класс Main, но как мне найти все эти документы, чтобы найти его?Есть ли приложение?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 25 января 2012

Вам не нужен суффикс .class при вызове Java-программы.Сделайте это следующим образом:

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[]);
}
2 голосов
/ 25 января 2012

Первое: каждый класс, который предоставляет сигнатуру этого метода:

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

может быть основным классом, запускаемым из JVM и имеющим право быть помещенным в манифест, чтобы включить выполнение оболочки.

Второе: когда вы запускаете класс в JRE, вы должны указать полное имя класса; например, если файл Steve.class находится в древовидной структуре, такой как com / mycompany / app, начиная с корневого каталога вашего приложения, где находится каталог MANIFEST, вы должны запустить его из корневого каталога, набрав:

java com.mycompany.app.Steve

Так что, если Стив выставляет основной метод и если вы можете правильно указать на него из корня, вы можете запустить его.

...