我想提出一個個人節目一定時間後或在某將關閉我的電腦時間/日期。但是,我正在運行多個操作系統,並希望用一個簡單的Java程序來完成此操作。 有沒有什麼辦法可以在沒有任何外部庫的情況下用Java發送一個與系統無關的機器關閉請求?我知道你可以在Windows中使用java.awt.Desktop.getDesktop().browse(new URI("shutdown /s"));
,但是,我想要的是系統獨立性。
回答
@robjb給了我最好的解決方案。儘管我的口味有點過於僵化,但我會一直在起訴,直到遇到問題。
String shutdownCommand;
StringPP operatingSystem = new StringPP(System.getProperty("os.name"));
if (operatingSystem.containsIgnoreCase("linux") ||
operatingSystem.containsIgnoreCase("mac") ||
operatingSystem.containsIgnoreCase("unix"))
{
shutdownCommand = "sudo shutdown -h -t 30";
}
else if (operatingSystem.containsIgnoreCase("windows"))
{
shutdownCommand = "shutdown /s /d P:0:0 /t 30 /c \"Blue Husky Timer 2 is shutting down your system, as you requested. \n"
+ "You have 30 seconds to save and close programs\"";
}
else
{
throw new UnsupportedOperationException("Unsupported operating system.");
}
try
{
Runtime.getRuntime().exec(shutdownCommand);
}
catch (Throwable t)
{
Main.LOG.logThrowable(t);
}
System.exit(0);
在上述例子中,StringPP
是增強與方法String
的能力,如以上所使用#containsIgnoreCase
的自定義類。 Main.LOG
是我製作和使用的日誌記錄工具。
不,沒有。
這超出了JVM或標準Java類庫的範圍。
快樂編碼。
如果它解釋了原因,我會對此進行投票或接受。就目前來看,它只是**聽起來像一個短視的意見。對不起...... – Supuhstar 2011-12-24 01:22:19
@Supuhstar老實說不知道還有什麼可說的:) JDK是一個通用庫。我不知道任何具有system-shutdown命令的任何*語言的*任何*標準庫,這是一個操作系統功能。這包括C,因爲許多由操作系統提供的系統調用(不管是Linux內核還是Windows和WinAPI)都不會以任何方式通過stdlib公開。作爲POSIX API的一部分,只有部分操作系統功能被公開:我找不到「關閉計算機」。 – 2011-12-25 00:14:44
所以......你是說「java.awt.Toolkit#shutdown()」太系統特定?爲什麼單個JVM不能處理實際的關閉命令,而Java字節碼仍然是相同的? – Supuhstar 2012-01-01 08:12:01
- 1. 建立兩個獨立的機器之間的SSH連接使用3系統
- 2. C中的獨立隨機生成器
- 3. HOWTO區分系統關機
- 4. 機器獨立與機器中性有什麼區別?
- 5. 從SharePoint獨立刪除SQL依賴關係克隆虛擬機
- 6. 靜態庫機器是獨立的嗎?
- 7. 機器學習系統
- 8. 機器相對於機器獨立語言
- 9. 使three20集成獨立於機器?
- 10. MSDTC從獨立的機器到域計算機
- 11. 壓縮機項目獨立?
- 12. Maven獨立依賴關係?
- 13. 獨立模特關係
- 14. 機器人框架硒獨立只有Java安裝
- 15. 檢測系統用戶關機
- 16. javaagent,系統托盤和關機
- 17. 使用Powershell檢測系統關機
- 18. 隨機android系統
- 19. 獲取遠程機器的系統信息(使用Java)
- 20. 的Jboss與獨立的HornetQ機
- 21. 操作系統獨立構建路徑
- 22. 獨立系統整合netbeans,tomcat和xampp
- 23. Java將2臺計算機與服務器 - 客戶機系統連接
- 24. SVN服務器主機操作系統
- 25. 機器人框架 - 與系統代理
- 26. 機器人操作系統(ROS)文檔
- 27. 多個獨立的隨機數集
- 28. 獨立於系統時間的穩定計時器
- 29. Simulink中的旋轉機械系統
- 30. Java中的獨立Socket.IO服務器
看看:http://stackoverflow.com/questions/25637/shutting-down-a-computer-using-java – Rob 2011-12-23 05:23:05
當採取這種方法(這將是你唯一的選擇),我建議直接使用' Runtime.exec()'而不是在桌面上瀏覽一些看起來像命令行的URL。 – 2011-12-23 05:24:08
根據結果使用「operatingSystem = System.getProperty(」os.name「)」,然後是「Runtime.exec()」的帖子絕對是他最好的選擇。 – paulsm4 2011-12-23 05:26:45