我是Java新手,我需要在java中運行CMD或Powershell,因為我想了解當前的RAM利用率和當前的磁盤分布在StackOverflow上有很多類似的問題,但我不明白。這是我的代碼:package test;import java.io.BufferedReader;import java.io.InputStreamReader;public class Main {? ? public static void main(String[] args) {? ? }? ? public static class CmdTest {? ? ? ? public static void main(String[] args) throws Exception {? ? ? ? ? ? ProcessBuilder builder = new ProcessBuilder(? ? ? ? ? ? ? ? ? ? "cmd.exe", "/c", "cd \"C:\\Program Files\\Microsoft SQL Server\" && dir");? ? ? ? ? ? builder.redirectErrorStream(true);? ? ? ? ? ? Process p = builder.start();? ? ? ? ? ? BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));? ? ? ? ? ? String line;? ? ? ? ? ? while (true) {? ? ? ? ? ? ? ? line = r.readLine();? ? ? ? ? ? ? ? if (line == null) {? ? ? ? ? ? ? ? ? ? break;? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? System.out.println(line);? ? ? ? ? ? }? ? ? ? }? ? }}我只得到一個空的控制臺,我不知道為什么。
1 回答

倚天杖
TA貢獻1828條經驗 獲得超3個贊
這里:
public static void main(String[] args) {
}
Main類的 main 方法是空的,什么也不做。
然后,您添加了Main 的另一個內部類,名為CmdTest。但該類及其 main 類從未被調用過。
我的建議是,刪除 CmdTest 類,并將其代碼放入現有的 Main.main() 中:
public class Main {
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder(...
您還可以將 Main.java 重命名為 CmdTest.java,并(基本上)刪除舊的 Main,并讓您的 CmdTest 成為其自己的公共頂級類。
鄭重聲明:格式非常重要。我花了2分鐘才弄清楚你的問題。為什么?由于格式誤導。如果你合理地縮進,潛在的問題將在 5 秒內顯現出來。因此:始終一致地縮進,并將 } 放在新行上,即使塊/方法為空!
最后:給出OP通過更多語法實驗的自我回答,真正的答案在這里:退后一步。例如,看看這個,了解正確的類 + main 必須是什么樣子。了解細節,然后開始插入您自己的代碼。
添加回答
舉報
0/150
提交
取消