首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

無 IDE 環境下編譯與運行 Java 程式的完整指南

     編輯:Java 相關知識

現代 Java 開發高度依賴 IDE(Eclipse、IntelliJ IDEA 等),但掌握命令行編譯、構建工具與手動運行流程,能幫助開發者深入理解構建生命周期、類加載機制與依賴管理,在排查環境問題、編寫腳本、面試考核時極具價值。本文以簡單的多類別專案為例,逐步演示 javac/java、Ant、Maven、Gradle 四種無 IDE 構建運行方式。

專案結構與示例代碼

假設專案目錄如下:

project-root/
├── src/
│   └── dustin/
│       └── examples/
│           ├── Parent.java
│           ├── Child.java
│           └── Main.java
└── classes/          # 編譯輸出目錄(需預先建立)

三個類別代碼:

// Parent.java
package dustin.examples;
public class Parent {
    @Override public String toString() { return "I'm the Parent."; }
}

// Child.java
package dustin.examples;
public class Child extends Parent {
    @Override public String toString() { return "I'm the Child."; }
}

// Main.java
package dustin.examples;
import static java.lang.System.out;
public class Main {
    private final Parent parent = new Parent();
    private final Child child = new Child();
    public static void main(String[] args) {
        Main instance = new Main();
        out.println(instance.parent);
        out.println(instance.child);
    }
}

1. 使用 javac/java 原生命令

編譯

# 從專案根目錄執行
javac -sourcepath src -d classes src/dustin/examples/*.java
  • -sourcepath src:指定源碼根目錄,編譯器據此解析包結構
  • -d classes:指定 .class 輸出目錄(必須預先存在)

運行

java -cp classes dustin.examples.Main
# 或
java -classpath classes dustin.examples.Main

-cp/-classpath 指定類搜索路徑,最後參數為包含 main 方法的完整類名。

javac 編譯輸出 編譯後類文件結構 java 運行結果

2. 使用 Apache Ant

Ant 以 XML 定義構建流程,適合需要精細控制的場景。

<?xml version="1.0" encoding="UTF-8"?>
<project name="BuildingSansIDE" default="run" basedir=".">
    <description>Building Simple Java Applications Without An IDE</description>
    <target name="compile" description="Compile the Java code.">
        <javac srcdir="src" destdir="classes" debug="true" includeantruntime="false" />
    </target>
    <target name="run" depends="compile" description="Run the Java application.">
        <java classname="dustin.examples.Main" fork="true">
            <classpath>
                <pathelement path="classes"/>
            </classpath>
        </java>
    </target>
</project>

執行 ant 即可完成編譯與運行(默認目標為 run)。

Ant 構建輸出

3. 使用 Apache Maven

Maven 採用約定優於配置,標準目錄結構為 src/main/java,本例為演示覆蓋默認配置。

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>dustin.examples</groupId>
    <artifactId>CompilingAndRunningWithoutIDE</artifactId>
    <version>1</version>
    <build>
        <defaultGoal>compile</defaultGoal>
        <sourceDirectory>src</sourceDirectory>
        <outputDirectory>classes</outputDirectory>
        <finalName>${project.artifactId}-${project.version}</finalName>
    </build>
</project>
  • 編譯:mvn compile 或直接 mvn(defaultGoal 為 compile)
  • 運行:mvn exec:java -Dexec.mainClass=dustin.examples.Main

Maven 編譯輸出 Maven 運行輸出

4. 使用 Gradle

Gradle 以 Groovy/Kotlin DSL 定義構建,兼具靈活性與約定。

apply plugin: 'java'
apply plugin: 'application'

sourceSets {
    main {
        java { srcDirs 'src' }
    }
}
sourceSets.main.output.classesDir = file("classes")
mainClassName = "dustin.examples.Main"
defaultTasks 'compileJava', 'run'

執行 gradle 即可完成編譯與運行(默認任務為 compileJava 和 run)。

Gradle 構建輸出

最佳實踐總結

工具適用場景核心優勢
javac/java教學驗證、極簡原型、腳本嵌入零依賴、直觀透明
Ant舊專案維護、高度自定義構建邏輯完全控制、無約定約束
Maven企業級標準化專案、依賴管理複雜約定優於配置、中央倉庫生態
Gradle現代專案、多模組、性能敏感、需要動態邏輯增量構建、DSL 靈活、性能優異

實際開發中,建議:

  1. 簡單測試用 javac/java 或 IDE 內建運行
  2. 專案落地優先選擇 Gradle 或 Maven,統一構建規範
  3. 構建產物(JAR/WAR)交付時,使用 java -jar 或腳本啟動
  4. 理解底層機制,才能駕馭上層工具
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved