创建Java项目的完整指南
·
创建Java项目的完整指南
我将为您详细介绍如何创建Java项目,从最简单的"Hello World"到完整的项目结构。
1. 最简单的Java项目 - 单个文件
方法一:使用文本编辑器和命令行
- 创建项目目录
bash
mkdir MyFirstJavaProject
cd MyFirstJavaProject
- 创建Java源文件
创建HelloWorld.java:
java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
- 编译和运行
bash
# 编译
javac HelloWorld.java
# 运行
java HelloWorld
2. 使用IDE创建Java项目
使用IntelliJ IDEA
- 新建项目
- 打开IntelliJ IDEA
- 选择 “New Project”
- 选择 “Java” → 确保已选择JDK
- 命名项目并创建
- 项目结构
text
MyProject/
├── src/
│ └── Main.java
├── out/ (编译输出)
└── .idea/ (IDE配置)
使用Eclipse
- 新建项目
- 打开Eclipse
- File → New → Java Project
- 输入项目名称
- 点击 “Finish”
- 创建类
- 右键src文件夹 → New → Class
- 输入类名,勾选"public static void main"
- 点击 “Finish”
3. 标准Java项目结构
Maven项目结构
text
my-app/
├── pom.xml
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── mycompany/
│ │ │ └── app/
│ │ │ └── App.java
│ │ └── resources/
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── mycompany/
│ │ └── app/
│ │ └── AppTest.java
│ └── resources/
└── target/
创建标准项目示例
- 手动创建目录结构
bash
mkdir -p MyStandardProject/src/main/java/com/example/myapp
mkdir -p MyStandardProject/src/test/java/com/example/myapp
mkdir -p MyStandardProject/src/main/resources
- 创建主类
在src/main/java/com/example/myapp/Main.java:
java
package com.example.myapp;
import com.example.myapp.utils.Calculator;
public class Main {
public static void main(String[] args) {
System.out.println("Starting My Application");
Calculator calc = new Calculator();
int result = calc.add(5, 3);
System.out.println("5 + 3 = " + result);
// 演示更多功能
displayGreeting("Java Developer");
}
public static void displayGreeting(String name) {
System.out.println("Welcome, " + name + "!");
}
}
- 创建工具类
在src/main/java/com/example/myapp/utils/Calculator.java:
java
package com.example.myapp.utils;
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
public int multiply(int a, int b) {
return a * b;
}
public double divide(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("Cannot divide by zero");
}
return (double) a / b;
}
}
- 编译和运行
# 编译所有Java文件
find src -name "*.java" > sources.txt
javac -d out @sources.txt
# 运行主类
java -cp out com.example.myapp.Main
4. 使用构建工具
使用Maven
- 安装Maven
从 Maven官网 下载并安装 - 创建Maven项目
bash
mvn archetype:generate -DgroupId=com.example -DartifactId=my-app \
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
- pom.xml示例
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
</plugins>
</build>
</project>
使用Gradle
- 安装Gradle
从 Gradle官网 下载并安装 - 创建Gradle项目
bash
mkdir my-gradle-project
cd my-gradle-project
gradle init --type java-application
- build.gradle示例
gradle
plugins {
id 'java'
id 'application'
}
group = 'com.example'
version = '1.0.0'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
testImplementation 'junit:junit:4.13.2'
}
application {
mainClass = 'com.example.App'
}
5. 完整的项目示例
学生管理系统示例
项目结构:
text
StudentManagementSystem/
├── src/
│ └── main/
│ └── java/
│ └── com/
│ └── example/
│ └── studentms/
│ ├── Main.java
│ ├── model/
│ │ └── Student.java
│ ├── service/
│ │ └── StudentService.java
│ └── util/
│ └── InputUtil.java
└── README.md
Student.java:
package com.example.studentms.model;
public class Student {
private int id;
private String name;
private int age;
private String major;
public Student(int id, String name, int age, String major) {
this.id = id;
this.name = name;
this.age = age;
this.major = major;
}
// Getters and setters
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getMajor() { return major; }
public void setMajor(String major) { this.major = major; }
@Override
public String toString() {
return String.format("ID: %d, Name: %s, Age: %d, Major: %s",
id, name, age, major);
}
}
StudentService.java:
package com.example.studentms.service;
import com.example.studentms.model.Student;
import java.util.ArrayList;
import java.util.List;
public class StudentService {
private List<Student> students;
private int nextId;
public StudentService() {
this.students = new ArrayList<>();
this.nextId = 1;
}
public void addStudent(String name, int age, String major) {
Student student = new Student(nextId++, name, age, major);
students.add(student);
System.out.println("Student added: " + student);
}
public void listAllStudents() {
if (students.isEmpty()) {
System.out.println("No students found.");
return;
}
System.out.println("\n=== All Students ===");
for (Student student : students) {
System.out.println(student);
}
}
public Student findStudentById(int id) {
for (Student student : students) {
if (student.getId() == id) {
return student;
}
}
return null;
}
public boolean deleteStudent(int id) {
Student student = findStudentById(id);
if (student != null) {
students.remove(student);
System.out.println("Student deleted: " + student);
return true;
}
return false;
}
}
Main.java:
package com.example.studentms;
import com.example.studentms.service.StudentService;
import com.example.studentms.util.InputUtil;
import java.util.Scanner;
public class Main {
private static StudentService studentService = new StudentService();
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("=== Student Management System ===");
boolean running = true;
while (running) {
displayMenu();
int choice = InputUtil.getIntInput("Enter your choice: ");
switch (choice) {
case 1:
addStudent();
break;
case 2:
studentService.listAllStudents();
break;
case 3:
findStudent();
break;
case 4:
deleteStudent();
break;
case 0:
running = false;
System.out.println("Goodbye!");
break;
default:
System.out.println("Invalid choice. Please try again.");
}
}
}
private static void displayMenu() {
System.out.println("\n=== Menu ===");
System.out.println("1. Add Student");
System.out.println("2. List All Students");
System.out.println("3. Find Student by ID");
System.out.println("4. Delete Student");
System.out.println("0. Exit");
}
private static void addStudent() {
System.out.println("\n--- Add New Student ---");
String name = InputUtil.getStringInput("Enter name: ");
int age = InputUtil.getIntInput("Enter age: ");
String major = InputUtil.getStringInput("Enter major: ");
studentService.addStudent(name, age, major);
}
private static void findStudent() {
int id = InputUtil.getIntInput("Enter student ID to find: ");
var student = studentService.findStudentById(id);
if (student != null) {
System.out.println("Student found: " + student);
} else {
System.out.println("Student not found with ID: " + id);
}
}
private static void deleteStudent() {
int id = InputUtil.getIntInput("Enter student ID to delete: ");
boolean deleted = studentService.deleteStudent(id);
if (!deleted) {
System.out.println("Student not found with ID: " + id);
}
}
}
6. 项目最佳实践
- 包命名规范
- 使用反向域名:com.companyname.projectname
- 全部小写
- 目录结构
- 分离源代码和测试代码
- 按功能分包(model, service, util等)
- 版本控制
- 初始化Git仓库
- 添加.gitignore文件
- 文档
- 创建README.md
- 添加必要的注释
下一步建议
- 学习依赖管理 - Maven或Gradle
- 单元测试 - JUnit
- 版本控制 - Git
- 持续集成 - Jenkins或GitHub Actions
这个指南涵盖了从简单到复杂的Java项目创建方法。建议从简单的命令行项目开始,逐步学习使用IDE和构建工具。
更多推荐



所有评论(0)