Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
java
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
eazydevelop-devcontainer-temp
java
Commits
80d3d1c3
You need to sign in or sign up before continuing.
Commit
80d3d1c3
authored
Aug 20, 2025
by
xiezhi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
java
parent
9c24090b
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
287 additions
and
2 deletions
+287
-2
Dockerfile
.devcontainer/Dockerfile
+1
-1
devcontainer.json
.devcontainer/devcontainer.json
+35
-1
README.md
README.md
+53
-0
pom.xml
pom.xml
+45
-0
App.java
src/main/java/com/example/App.java
+51
-0
Calculator.java
src/main/java/com/example/Calculator.java
+53
-0
CalculatorTest.java
src/test/java/com/example/CalculatorTest.java
+47
-0
inputFiles.lst
...en-compiler-plugin/compile/default-compile/inputFiles.lst
+2
-0
No files found.
.devcontainer/Dockerfile
View file @
80d3d1c3
FROM
hb.eazytec-cloud.com/eazytec/node:ubuntu
FROM
hb.eazytec-cloud.com/eazytec/eazydevelop-base:ubuntu
\ No newline at end of file
\ No newline at end of file
.devcontainer/devcontainer.json
View file @
80d3d1c3
{
{
"name"
:
"Java Development Environment"
,
"image"
:
"mcr.microsoft.com/devcontainers/base:ubuntu"
,
"build"
:
{
"build"
:
{
"dockerfile"
:
"Dockerfile"
"dockerfile"
:
"Dockerfile"
}
},
"features"
:
{
"ghcr.io/devcontainers/features/java:1.6.3"
:
{
"version"
:
"17"
,
"installMaven"
:
true
,
"installGradle"
:
true
},
"ghcr.io/devcontainers/features/common-utils:2"
:
{
"installZsh"
:
true
,
"configureZshAsDefaultShell"
:
true
,
"installOhMyZsh"
:
true
,
"upgradePackages"
:
true
}
},
"customizations"
:
{
"vscode"
:
{
"extensions"
:
[
"vscjava.vscode-java-pack"
,
"vscjava.vscode-maven"
,
"vscjava.vscode-gradle"
,
"redhat.java"
,
"vscjava.vscode-java-debug"
,
"vscjava.vscode-java-test"
],
"settings"
:
{
"java.home"
:
"/usr/local/openjdk-17"
,
"java.configuration.updateBuildConfiguration"
:
"automatic"
,
"java.compile.nullAnalysis.mode"
:
"automatic"
}
}
},
"postCreateCommand"
:
"java -version && mvn -version && gradle -version"
,
"remoteUser"
:
"vscode"
}
}
\ No newline at end of file
README.md
0 → 100644
View file @
80d3d1c3
# Java DevContainer Demo
这是一个使用 DevContainer Features 的 Java 开发环境演示项目。
## 特性
-
✅ Java 17 运行时
-
✅ Maven 构建工具
-
✅ Gradle 构建工具
-
✅ JUnit 测试框架
-
✅ VS Code Java 扩展
-
✅ Oh My Zsh 终端
## 快速开始
1.
在 VS Code 中打开项目
2.
按
`Ctrl+Shift+P`
(Windows/Linux) 或
`Cmd+Shift+P`
(Mac)
3.
选择 "Dev Containers: Reopen in Container"
4.
等待容器构建完成
## 运行项目
### 使用 Maven
```
bash
# 编译
mvn compile
# 运行测试
mvn
test
# 运行主类
mvn
exec
:java
-Dexec
.mainClass
=
"com.example.App"
# 打包
mvn package
```
### 使用 Gradle
```
bash
# 编译
gradle compileJava
# 运行测试
gradle
test
# 运行主类
gradle run
# 打包
gradle build
```
## 项目结构
pom.xml
0 → 100644
View file @
80d3d1c3
<?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>
java-demo
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<packaging>
jar
</packaging>
<name>
Java Demo
</name>
<description>
A simple Java demo project
</description>
<properties>
<maven.compiler.source>
17
</maven.compiler.source>
<maven.compiler.target>
17
</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>
<sourceDirectory>
src
</sourceDirectory>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
3.11.0
</version>
<configuration>
<source>
17
</source>
<target>
17
</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
src/main/java/com/example/App.java
0 → 100644
View file @
80d3d1c3
package
com
.
example
;
/**
* 主应用程序类
* @author Demo User
* @version 1.0
*/
public
class
App
{
/**
* 主方法
* @param args 命令行参数
*/
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
"🎉 欢迎使用 Java DevContainer!"
);
System
.
out
.
println
(
"Java 版本: "
+
System
.
getProperty
(
"java.version"
));
System
.
out
.
println
(
"Java 供应商: "
+
System
.
getProperty
(
"java.vendor"
));
// 演示一些 Java 17 特性
demoJava17Features
();
// 演示计算功能
Calculator
calculator
=
new
Calculator
();
int
result
=
calculator
.
add
(
10
,
20
);
System
.
out
.
println
(
"10 + 20 = "
+
result
);
}
/**
* 演示 Java 17 新特性
*/
private
static
void
demoJava17Features
()
{
System
.
out
.
println
(
"\n�� Java 17 新特性演示:"
);
// Text blocks (Java 15+)
String
json
=
"""
{
"
name
": "
Java
Demo
",
"
version
": "
17
",
"
features
": ["
Text
Blocks
", "
Pattern
Matching
", "
Records
"]
}
"""
;
System
.
out
.
println
(
"Text Blocks 示例:"
);
System
.
out
.
println
(
json
);
// Pattern matching (Java 16+)
Object
obj
=
"Hello Java 17"
;
if
(
obj
instanceof
String
str
)
{
System
.
out
.
println
(
"字符串长度: "
+
str
.
length
());
}
}
}
\ No newline at end of file
src/main/java/com/example/Calculator.java
0 → 100644
View file @
80d3d1c3
package
com
.
example
;
/**
* 简单计算器类
* @author Demo User
* @version 1.0
*/
public
class
Calculator
{
/**
* 加法运算
* @param a 第一个数
* @param b 第二个数
* @return 两数之和
*/
public
int
add
(
int
a
,
int
b
)
{
return
a
+
b
;
}
/**
* 减法运算
* @param a 被减数
* @param b 减数
* @return 两数之差
*/
public
int
subtract
(
int
a
,
int
b
)
{
return
a
-
b
;
}
/**
* 乘法运算
* @param a 第一个数
* @param b 第二个数
* @return 两数之积
*/
public
int
multiply
(
int
a
,
int
b
)
{
return
a
*
b
;
}
/**
* 除法运算
* @param a 被除数
* @param b 除数
* @return 两数之商
* @throws ArithmeticException 当除数为0时抛出
*/
public
double
divide
(
int
a
,
int
b
)
{
if
(
b
==
0
)
{
throw
new
ArithmeticException
(
"除数不能为0"
);
}
return
(
double
)
a
/
b
;
}
}
\ No newline at end of file
src/test/java/com/example/CalculatorTest.java
0 → 100644
View file @
80d3d1c3
package
com
.
example
;
import
org.junit.Test
;
import
static
org
.
junit
.
Assert
.*;
/**
* 计算器测试类
* @author Demo User
* @version 1.0
*/
public
class
CalculatorTest
{
private
Calculator
calculator
=
new
Calculator
();
@Test
public
void
testAdd
()
{
assertEquals
(
"加法测试失败"
,
15
,
calculator
.
add
(
10
,
5
));
assertEquals
(
"加法测试失败"
,
0
,
calculator
.
add
(-
5
,
5
));
assertEquals
(
"加法测试失败"
,
-
10
,
calculator
.
add
(-
5
,
-
5
));
}
@Test
public
void
testSubtract
()
{
assertEquals
(
"减法测试失败"
,
5
,
calculator
.
subtract
(
10
,
5
));
assertEquals
(
"减法测试失败"
,
-
10
,
calculator
.
subtract
(-
5
,
5
));
assertEquals
(
"减法测试失败"
,
0
,
calculator
.
subtract
(-
5
,
-
5
));
}
@Test
public
void
testMultiply
()
{
assertEquals
(
"乘法测试失败"
,
50
,
calculator
.
multiply
(
10
,
5
));
assertEquals
(
"乘法测试失败"
,
-
25
,
calculator
.
multiply
(-
5
,
5
));
assertEquals
(
"乘法测试失败"
,
25
,
calculator
.
multiply
(-
5
,
-
5
));
}
@Test
public
void
testDivide
()
{
assertEquals
(
"除法测试失败"
,
2.0
,
calculator
.
divide
(
10
,
5
),
0.001
);
assertEquals
(
"除法测试失败"
,
-
1.0
,
calculator
.
divide
(-
5
,
5
),
0.001
);
assertEquals
(
"除法测试失败"
,
1.0
,
calculator
.
divide
(-
5
,
-
5
),
0.001
);
}
@Test
(
expected
=
ArithmeticException
.
class
)
public
void
testDivideByZero
()
{
calculator
.
divide
(
10
,
0
);
}
}
\ No newline at end of file
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
0 → 100644
View file @
80d3d1c3
/Users/xiezhi/work/code/ide/cursor/devcontainer/eazy-code-server-devcontainer/src/main/java/com/example/Calculator.java
/Users/xiezhi/work/code/ide/cursor/devcontainer/eazy-code-server-devcontainer/src/main/java/com/example/App.java
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment