回答
public class Foo {
static {
System.out.println("Message");
System.exit(0);
}
}
的JVM之前System.exit(0)
退出程序開始尋找main()
(注:即使它與JDK 7的javac
它不能與它java
運行編譯,因爲它預計main(String[])
方法。)
@Roflcoptr'$ java Foo'就像任何其他 – 2011-12-22 14:23:07
@Roflcoptr'java -cp。 Foo就像一個主要的程序。 ;) – 2011-12-22 14:23:37
@Roflcoptr只是編譯類並運行'java Foo'它會加載類,打印消息;並且在它開始找到執行的入口點之前我們退出。 – 2011-12-22 14:24:13
在一個名爲的文件
class Con {
String hi = "\n\nHello World\n\n";
}
你只需要在Windows上編譯程序。不運行它。 :-P
這是可行的,因爲'CON'在Windows上有特殊含義,對吧? – 2011-12-22 14:23:44
這也打印了很多其他的東西。順便說一下,什麼是「Con」?它不會將該文件命名爲「Con.java」。 +1。 – 2011-12-22 14:32:17
-1爲與平臺無關的語言中的問題提供平臺特定的解決方案是不正確的。 – 2011-12-22 14:37:56
class MainMethodNot
{
static
{
System.out.println("Hello World");
System.exit(0);
}
}
因爲靜態初始化塊執行第一次加載類時,我們可以打印出的「Hello World」,而無需編寫一個主要方法。使用「System.exit()」命令停止執行。所以,我們防止「主要方法未找到」錯誤。 這是一個相當棘手的問題
public final class Main {
static {
System.out.println("Hello World");
System.exit(0);
}
}
靜態塊首先就被調用之前main();
方法,因此前main()
被稱爲類加載執行,System.exit(0)
啓動VM關閉。
System.exit
方法會暫停執行當前線程和其他所有其他線程的執行。當調用System.exit
時,虛擬機在關閉前執行兩個清理任務。
首先,它執行已經用Runtime.addShutdownHook
註冊的所有關閉鉤子。這對釋放VM外部的資源很有用。使用關閉掛鉤進行虛擬機退出前必須發生的行爲。
當System.exit
被稱爲 時VM執行的第二個清理任務涉及終結器。如果已調用System.runFinalizersOnExit
或其邪惡雙胞胎 Runtime.runFinalizersOnExit
,則虛擬機將運行所有尚未最終確定的對象的終結器。這些方法早在 被棄用,並有充分的理由。永遠不要致電System.runFinalizersOnExit
或 Runtime.runFinalizersOnExit
出於任何原因:它們是Java庫中最危險的方法之一。調用這些方法可能導致終結器在活動對象上運行,而其他線程同時操縱它們,導致不穩定的行爲或死鎖。
總之,System.exit
立即停止所有程序線程;它不會造成 最終阻止執行,但它會在停止虛擬機之前運行關閉掛接。當關閉虛擬機關閉 時,使用關閉掛鉤來終止外部資源。通過調用 System.halt
可以暫停虛擬機而不執行關機掛鉤,但此方法很少使用。
你可以自定義一個類加載器,打印您的留言:
public class MyClassLoader extends ClassLoader {
public MyClassLoader(ClassLoader other) {
super(other);
System.out.println("Hi there");
System.exit(0);
}
}
然後運行java命令:
java -Djava.system.class.loader=MyClassLoader
(不需要添加類作爲參數)
是的,其中一種方式是靜態模塊,但在以前版本的JDK中不在JDK 1.7中。
class Withoutmain{
static{
System.out.println("Message: Your message can be print on console without main() method");
System.exit(0);
}
}
輸出:消息:你的消息可以是在控制檯上打印而不main()方法(如果不是JDK7)
輸出:錯誤:Main方法在類A3不存在,請定義的主要方法爲: 公共靜態無效的主要(字串[] args)
這是可能的java直到6使用的System.out.println();沒有main()。 從Java 7開始,用靜態塊就無法做到這一點。它仍然會要求主要課程的主要方法。
是的,我在很多地方見過,但我不清楚爲什麼不在jdk7和更高版本中執行,如果你可以給出更詳細的信息,那就太好了。 – 2017-11-28 10:27:39
如果你不想太使用靜態塊,可以按以下方式
public class NoMain {
private static final int STATUS = getStatus();
private static int getStatus() {
System.out.println("Hello World!!");
System.exit(0);
return 0;
}
}
但是,請注意,這是Java 6的版本來完成。它的not working in Java 7據說在Java 8中支持。我嘗試使用JDK 1.8.0_77-b03,它仍然不能正常工作
實際上,它不適用於Java 8的最新更新。您可以稱它爲根據他們的錯誤修復,但據我相信我目前的知識,這不能稱爲錯誤修復,因爲它也導致在java編程中的概念性變化也很少。
是的,您可以在不使用main()的情況下將消息打印到控制檯。
創建使用JUnit測試,並執行它:
@Test
public printTest() {
System.out.println("myprint");
}
- 1. 在OSGi控制檯上打印消息
- 2. 在控制檯中打印HL7消息
- 3. 如何使用console.log在控制檯上打印消息
- 4. 如何在Laravel的控制檯上打印消息?
- 5. 打印兩次控制檯消息
- 6. R-如何在不打印控制檯的情況下返回命名列表
- 7. 如何不在控制檯中打印消息401(未授權)?
- 8. 錯誤消息不在eclipse控制檯中打印
- 9. 控制檯不會打印出我的方法中的信息
- 10. 取消控制檯打印
- 11. 默認情況下在Chrome中摺疊控制檯信息消息
- 12. 防止JSF驗證消息用於在控制檯打印
- 13. 如何在沒有標準庫的情況下打印到控制檯(Linux)(libc)
- 14. 日誌信息不在控制檯上打印
- 15. 我如何設法讓stderr消息不在控制檯中打印?
- 16. 我的Android Studio控制檯不打印日誌消息
- 17. Intellij中的ScalaTest不打印控制檯消息
- 18. 如何在不顯示控制檯的情況下調用_wsystem?
- 19. 如何在Scilab控制檯窗口中打印消息?
- 20. crontab如何在控制檯中打印消息?
- 21. 在控制檯上的linux kprint消息
- 22. 如何在不打印的情況下獲取C++ perror(errno)消息。
- 23. 如何在不使用換行符的情況下將字符串打印到控制檯?
- 24. 在Ipython Qt控制檯sp.info不在控制檯內部打印
- 25. 如何在不打開GUI的情況下在控制檯中啓動apache tika?
- 26. 如何在不使用命令的情況下從swiftmailer發送後臺打印
- 27. 如何在不打印pid的情況下打印「$$」?
- 28. 如何在不顯示打印對話的情況下打印?
- 29. SSRS 2008 - 在縱向不打印的情況下打印PDF
- 30. 在控制檯上打印(導軌s)
你如何開始你沒有一個主要方法的應用程序? – RoflcoptrException 2011-12-22 14:17:37
我不認爲這是一個很好的面試問題。當然,你想測試申請人的問題解決能力,而不是Java的少量使用方面的知識? – 2011-12-22 15:50:17
@CallumRogers +1瑣事是最糟糕的問題,任何提出這些問題的人都不配當我的老闆。 – 2011-12-22 20:26:20