37 changed files with 232 additions and 26 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,11 +1,11 @@ |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\display\ResultDisplay.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\analysis\DataAnalyzer.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\Main.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\controller\DirectorController.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\DataInitializer.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\repository\MovieRepository.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\model\Movie.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\crawler\MovieCrawler.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\MovieRatingsApplication.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\model\DirectorStats.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\main\java\com\movieratings\service\MovieService.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\display\ResultDisplay.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\model\DirectorStats.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\MovieRatingsApplication.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\DataInitializer.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\controller\DirectorController.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\service\MovieService.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\Main.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\model\Movie.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\repository\MovieRepository.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\crawler\MovieCrawler.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\main\java\com\movieratings\analysis\DataAnalyzer.java |
|||
|
|||
@ -1 +1 @@ |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\project\src\test\java\com\movieratings\analysis\DataAnalyzerTest.java |
|||
D:\VisualStudioProgram\VSCodePrograms\JavaLearningProject\java\project\src\test\java\com\movieratings\analysis\DataAnalyzerTest.java |
|||
|
|||
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@ |
|||
------------------------------------------------------------------------------- |
|||
Test set: com.movieratings.analysis.DataAnalyzerTest |
|||
------------------------------------------------------------------------------- |
|||
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.07 s - in com.movieratings.analysis.DataAnalyzerTest |
|||
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.054 s - in com.movieratings.analysis.DataAnalyzerTest |
|||
|
|||
Binary file not shown.
@ -0,0 +1,2 @@ |
|||
Prompt:帮助我正确运行Main.java,完成之后写一份修复流程和报错原因的readme |
|||
帮我用python绘制w4的类图 |
|||
Binary file not shown.
@ -0,0 +1,12 @@ |
|||
public class Circle extends shape { |
|||
private double radius; |
|||
|
|||
public Circle(double radius) { |
|||
this.radius = radius; |
|||
} |
|||
|
|||
public double getArea() { |
|||
double area = Math.PI * radius * radius; |
|||
return area; |
|||
} |
|||
} |
|||
Binary file not shown.
@ -0,0 +1,11 @@ |
|||
public class Main { |
|||
public static void main(String[] args) { |
|||
shape c = new Circle(2); |
|||
shape r = new Rectangle(3, 4); |
|||
shape t = new Triangle(10, 5); |
|||
|
|||
ShapeUtil.printArea(c); |
|||
ShapeUtil.printArea(r); |
|||
ShapeUtil.printArea(t); |
|||
} |
|||
} |
|||
|
After Width: | Height: | Size: 54 KiB |
@ -0,0 +1,144 @@ |
|||
# Lab 项目启动故障诊断与修复技术报告 |
|||
|
|||
项目路径:`D:\VisualStudioProgram\VSCodePrograms\JavaProjects\Lab` |
|||
运行环境:Windows + PowerShell 5 + JDK 25.0.2 |
|||
|
|||
## 目标与验收标准 |
|||
|
|||
- 诊断并修复导致项目无法编译/运行的全部错误 |
|||
- 确保在 `Lab` 目录下可以“一次性”完成编译并启动 |
|||
- 验证既有图形面积计算与打印功能可正常工作,并保留日志证据 |
|||
|
|||
## 过程记录(按时间顺序) |
|||
|
|||
### 1)首次复现:编译失败(类名与文件名不一致) |
|||
|
|||
#### 报错原始输出(完整) |
|||
|
|||
执行命令(在 `D:\VisualStudioProgram\VSCodePrograms\JavaProjects` 目录下): |
|||
|
|||
```text |
|||
javac -encoding UTF-8 Lab\*.java |
|||
``` |
|||
|
|||
编译器输出: |
|||
|
|||
```text |
|||
Lab\Main.java:3: 错误: 类 main 是公共的, 应在名为 main.java 的文件中声明 |
|||
public class main { |
|||
^ |
|||
1 个错误 |
|||
``` |
|||
|
|||
#### 根本原因分析 |
|||
|
|||
- `Main.java` 文件内声明的是 `public class main`(类名为小写 `main`)。 |
|||
- Java 规则:`public` 顶级类名必须与文件名完全一致(区分大小写)。因此 `Main.java` 只能声明 `public class Main`。 |
|||
|
|||
#### 修复步骤 |
|||
|
|||
- 将 `Main.java` 中的 `public class main` 更正为 `public class Main`。 |
|||
|
|||
#### 验证方式与结果 |
|||
|
|||
- 重新执行 `javac` 编译,返回码为 `0`(编译通过)。 |
|||
|
|||
--- |
|||
|
|||
### 2)启动方式问题:包声明与目录作为“项目根”不匹配(导致直接在 Lab 目录下不便运行) |
|||
|
|||
#### 现象说明 |
|||
|
|||
源码最初包含 `package Lab;`。当用户将 `Lab` 目录直接作为工作目录(也就是把 `Lab` 当作 classpath 根)时: |
|||
|
|||
- `package Lab;` 期望类文件位于 `...\Lab\Lab\` 下(相对 classpath 根多一层 `Lab` 目录)。 |
|||
- 但实际源码文件就位于 `...\Lab\`,导致“在 Lab 目录直接编译/运行”的体验与包结构冲突。 |
|||
|
|||
#### 根本原因分析 |
|||
|
|||
- “包名/目录层级/运行时 classpath 根”三者不一致。 |
|||
- 本项目为单文件夹小练习,更符合“默认包 + 在 Lab 目录直接 javac/java”的使用方式。 |
|||
|
|||
#### 修复步骤 |
|||
|
|||
- 从以下源码文件中移除 `package Lab;` 声明,使其落在默认包: |
|||
- `Main.java` |
|||
- `shape.java` |
|||
- `Circle.java` |
|||
- `Rectangle.java` |
|||
- `Triangle.java` |
|||
- `ShapeUtil.java` |
|||
- 调整 `Main.java` 以调用现有功能(创建图形并打印面积),用于功能验证。 |
|||
|
|||
#### 验证方式与结果 |
|||
|
|||
在 `D:\VisualStudioProgram\VSCodePrograms\JavaProjects\Lab` 目录下执行: |
|||
|
|||
```text |
|||
javac -encoding UTF-8 *.java |
|||
java Main |
|||
``` |
|||
|
|||
程序成功启动并输出面积信息(见“最终成功证据”)。 |
|||
|
|||
--- |
|||
|
|||
### 3)验证阶段二次报错:PowerShell 5 不支持 `&&` 作为语句分隔符 |
|||
|
|||
#### 报错原始输出(完整) |
|||
|
|||
执行命令(在 `Lab` 目录下): |
|||
|
|||
```text |
|||
javac -encoding UTF-8 *.java && java Main |
|||
``` |
|||
|
|||
PowerShell 输出: |
|||
|
|||
```text |
|||
所在位置 行:1 字符: 30 |
|||
+ javac -encoding UTF-8 *.java && java Main ; exit $LASTEXITCODE |
|||
+ ~~ |
|||
标记“&&”不是此版本中的有效语句分隔符。 |
|||
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException |
|||
+ FullyQualifiedErrorId : InvalidEndOfLine |
|||
``` |
|||
|
|||
#### 根本原因分析 |
|||
|
|||
- Windows PowerShell 5 不支持 `&&` 作为命令连接符(该特性在 PowerShell 7 才提供)。 |
|||
|
|||
#### 修复步骤 |
|||
|
|||
- 将“编译成功才运行”的命令改为 PowerShell 5 兼容写法: |
|||
|
|||
```text |
|||
javac -encoding UTF-8 *.java; if ($LASTEXITCODE -eq 0) { java Main } |
|||
``` |
|||
|
|||
#### 验证方式与结果 |
|||
|
|||
- 以上命令在 PowerShell 5 下成功执行并得到正确输出(见“最终成功证据”)。 |
|||
|
|||
## 最终成功证据(日志) |
|||
|
|||
JDK 版本: |
|||
|
|||
```text |
|||
javac 25.0.2 |
|||
``` |
|||
|
|||
在 `Lab` 目录下编译并启动: |
|||
|
|||
```text |
|||
javac -encoding UTF-8 *.java; if ($LASTEXITCODE -eq 0) { java Main } |
|||
The area of the shape is: 12.566370614359172 |
|||
The area of the shape is: 12.0 |
|||
The area of the shape is: 25.0 |
|||
``` |
|||
|
|||
## 预防同类问题的改进建议 |
|||
|
|||
- 规范类/文件命名:任何 `public class X` 必须位于 `X.java` 中,并保持大小写一致。 |
|||
- 明确“项目根”概念:若使用 `package`,应保证源码目录层级与包名一致;否则采用默认包并在同一目录下编译运行。 |
|||
- 统一运行脚本:在 Windows 环境建议提供 PowerShell 5 兼容命令,或明确要求 PowerShell 7+ 才能使用 `&&`。 |
|||
Binary file not shown.
@ -0,0 +1,14 @@ |
|||
public class Rectangle extends shape { |
|||
private double length; |
|||
private double width; |
|||
|
|||
public Rectangle(double length, double width) { |
|||
this.length = length; |
|||
this.width = width; |
|||
} |
|||
|
|||
public double getArea() { |
|||
double area = length * width; |
|||
return area; |
|||
} |
|||
} |
|||
Binary file not shown.
@ -0,0 +1,6 @@ |
|||
public class ShapeUtil { |
|||
public static void printArea(shape s) { |
|||
double area = s.getArea(); |
|||
System.out.println("The area of the shape is: " + area); |
|||
} |
|||
} |
|||
Binary file not shown.
@ -0,0 +1,14 @@ |
|||
public class Triangle extends shape { |
|||
private double base; |
|||
private double height; |
|||
|
|||
public Triangle(double base, double height) { |
|||
this.base = base; |
|||
this.height = height; |
|||
} |
|||
|
|||
public double getArea() { |
|||
double area = 0.5 * base * height; |
|||
return area; |
|||
} |
|||
} |
|||
|
After Width: | Height: | Size: 71 KiB |
Binary file not shown.
@ -0,0 +1,3 @@ |
|||
public abstract class shape { |
|||
public abstract double getArea(); |
|||
} |
|||
Loading…
Reference in new issue