Как вы можете запустить программу на Java без основного метода? [Дубликат]

Possible Duplicate:
Printing message on Console without using main() method

Может кто-нибудь подсказать, как можно запустить программу JAVAwithout писатьmain method..

Например:

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

Как можно вывести вышеуказанную строку на консоль?without с использованиемpublic static void main(String arg[]) в классе.

 OKGimmeMoney13 июл. 2015 г., 18:06
@DanielPryden Из любопытства, почему / как ты решил задать этот вопрос? Должен ли ОП опубликовать что-то замысловатое, чтобы вы точно поняли, что они делают? Вопрос кажется вполне обоснованным, и идея легко распространяется на любой код, который вы захотите запустить. Опять же, почему / как вы подумали об этом вопросе?
 Daniel Pryden10 июл. 2012 г., 22:42
Я надеюсь, что это просто из любопытства, и вы не собираетесь делать это в реальной программе ... верно?

Ответы на вопрос(4)

Решение Вопроса

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

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

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

Exception in thread "main" java.lang.NoSuchMethodError: main

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

Начиная с JDK6, вы больше не видите сообщение отstatic блок инициализатора;подробности здесь.

 01 июл. 2017 г., 17:07
не работает для меня ... Java версия 1.8.0_65
 user151512910 июл. 2012 г., 22:47
Итак, я должен использовать статический блок в этом случае. Статический блок это тогда. Спасибо за ваш отзыв.

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

 17 июн. 2014 г., 23:51
Очевидно, что они программы!

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

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

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

Exception in thread "main" java.lang.NoSuchMethodError: main

ВJava 7, тем не мение,this does not work anymore, хотя он компилируется, следующееошибка появится при попытке его выполнить:

The program compiled successfully, but main class was not found. Main class should contain method: public static void main (String[] args).

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

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

This article explains how can we create a Java Virtual Machine Launcher (like java.exe or javaw.exe). It explores how the Java Virtual Machine launches a Java application. It gives you more ideas on the JDK or JRE you are using. This launcher is very useful in Cygwin (Linux emulator) with Java Native Interface. This article assumes a basic understanding of JNI.

 27 окт. 2015 г., 11:26
Это было быстро и умно. Спасибо...
 27 окт. 2015 г., 11:19
@PrakrutiPathik Слава богу, интернет-архив все еще работает. Ну вот:web.archive.org/web/20140311103404/http://www.codeproject.com/…
 22 янв. 2018 г., 14:22
В Java 7Error: Could not find or load main class Test55 появляется на бегуjava Foo
 27 окт. 2015 г., 11:11
Здравствуйте, @platzhirsch, в поисках способов запуска приложения, отличного от основных методов, я следовал этой статье, но ссылка, которую вы упомянули здесь для получения информации о JVM Launcher, больше не существует.Can you please help in this                                                                    Я провел довольно много времени в сети, чтобы найти его сам, но не знал, с чего начать.
public class X { static {
  System.out.println("Main not required to print this");
  System.exit(0);
}}

java X.

Ваш ответ на вопрос