簡體   English   中英

是否可以在不編譯的情況下從命令行運行 Java 程序?

[英]Is it possible to run Java program from command line without compiling?

我有一組指令來創建一個 Java 應用程序,該應用程序在從 CMD 行運行應用程序時采用多個參數。

指令指出:

因此,使用上面的示例集,假設程序的 main() 方法在名為 JavaClassName 的類中,輸出應為:

$ java JavaClassName 4 7 file.csv
program output here

我的問題是:

這不是跳過編譯過程嗎?
他們是否會假設將 Java 類加載到以前從未運行過此應用程序的計算機上(或僅包含運行所需的.java文件的目錄)? 運行 cmd

$ java JavaClassName 4 7 file.csv

會輸出什么?

旁注:目前,運行該 CMD 輸出

Error: Could not find or load main class JavaClassName

已經通過多個 SO 問題和在線教程試圖讓它運行,但我還沒有讓它工作。

你問:

這不是跳過編譯過程嗎?

絕對沒錯。 諸如java JavaClassName 4 7 file.csv類的命令行假定當前目錄中(或在CLASSPATH環境變量中找到的某些其他目錄或Zip / Jar文件中)存在已編譯的類文件“ JavaClassName.class”。 是的,要生成該“ JavaClassName.class”類文件,必須首先使用Java編譯器。

從 Java 10 開始,可以運行適合單個文件的 Java 程序,而無需先手動運行編譯器。
它將在執行前即時編譯。 很好,對腳本很有用。

例如編寫 HelloWorld.java 文件

public class HelloWorld{
  public static void main(String[] args) { 
        System.out.println("Hello World");
  }
}

我們可以運行它

java HelloWorld.java

我們還可以在單​​個文件中添加更多類。


從 Java 11 開始,我們也可以使用shebang文件

  • 我們必須指定您要使用的 Java 語言版本
  • 我們必須保存沒有.java擴展名的文件
  • 記得給可執行權限chmod +x HelloWorld

寫入HelloWorld文件

#!/path/to/java --source 11

public class HelloWorld{
  public static void main(String[] args) { 
        System.out.println("Hello World");
  }
}

我們可以運行它

./HelloWorld

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM