Как запустить Java-программу без основного метода? - программирование
Подтвердить что ты не робот

Как запустить Java-программу без основного метода?

Возможный дубликат:
Печать сообщения на консоли без использования метода main()

Может ли кто-нибудь предложить, как программа JAVA может выполнять без, написание основного метода .

Например,

System.out.println("Main not required to print this");

Как эта строка может быть напечатана на консоли без с помощью public static void main (String arg []) в классе.

4b9b3361

Ответ 1

Используйте статический блок инициализации для печати сообщения. Таким образом, как только ваш класс будет загружен, будет напечатано сообщение. Затем трюк становится использовать другую программу для загрузки вашего класса.

public class Hello {
  static {
    System.out.println("Hello, World!");
  }
}

Конечно, вы можете запустить программу как java Hello, и вы увидите сообщение; однако команда также потерпит неудачу с сообщением:

Исключение в потоке "main" java.lang.NoSuchMethodError: main

[Изменить], как отмечают другие, вы можете избежать NoSuchmethodError, просто позвонив System.exit(0) сразу после печати сообщения.

Ответ 2

До и включая Java 6 это можно было сделать, используя Статический блок инициализации, как было указано в вопросе Печать сообщения на консоли без использования метода main(). Например, используя следующий код:

public class Foo {
    static {
         System.out.println("Message");
         System.exit(0);
    } 
}

System.exit(0) позволяет программе выйти до того, как JVM ищет метод main, в противном случае будет выбрана следующая ошибка:

Исключение в потоке "main" java.lang.NoSuchMethodError: main

В Java 7, однако это больше не работает, даже если он компилируется, следующий ошибка появится при попытке выполнить ее:

Программа скомпилирована успешно, но основной класс не найден. Основной класс должен содержать метод: public static void main (String [] args).

Здесь альтернатива - написать свой собственный пусковой механизм, таким образом вы можете определить точки входа, как хотите.

В статье JVM Launcher вы найдете необходимую информацию для начала работы:

В этой статье объясняется, как мы можем создать виртуальную машину Java Launcher (например, java.exe или javaw.exe). В нем рассматривается, как Java Виртуальная машина запускает приложение Java. Это дает вам больше идей на JDK или JRE, которые вы используете. Эта пусковая установка очень полезна в Cygwin (эмулятор Linux) с интерфейсом Java Native. Эта статья предполагает базовое понимание JNI.

Ответ 3

public class X { static {
  System.out.println("Main not required to print this");
  System.exit(0);
}}

Выполнить из cmdline с помощью java X.

Ответ 4

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