diff --git a/project/target/classes/com/movieratings/DataInitializer.class b/project/target/classes/com/movieratings/DataInitializer.class index 32ce6aa..0447824 100644 Binary files a/project/target/classes/com/movieratings/DataInitializer.class and b/project/target/classes/com/movieratings/DataInitializer.class differ diff --git a/project/target/classes/com/movieratings/Main.class b/project/target/classes/com/movieratings/Main.class index 3dddd94..41c75d5 100644 Binary files a/project/target/classes/com/movieratings/Main.class and b/project/target/classes/com/movieratings/Main.class differ diff --git a/project/target/classes/com/movieratings/MovieRatingsApplication.class b/project/target/classes/com/movieratings/MovieRatingsApplication.class index b4f7b88..9c1c8a5 100644 Binary files a/project/target/classes/com/movieratings/MovieRatingsApplication.class and b/project/target/classes/com/movieratings/MovieRatingsApplication.class differ diff --git a/project/target/classes/com/movieratings/analysis/DataAnalyzer$CorrelationResult.class b/project/target/classes/com/movieratings/analysis/DataAnalyzer$CorrelationResult.class index 30d88de..0f94889 100644 Binary files a/project/target/classes/com/movieratings/analysis/DataAnalyzer$CorrelationResult.class and b/project/target/classes/com/movieratings/analysis/DataAnalyzer$CorrelationResult.class differ diff --git a/project/target/classes/com/movieratings/analysis/DataAnalyzer$DirectorStats.class b/project/target/classes/com/movieratings/analysis/DataAnalyzer$DirectorStats.class index 4ca4b06..3ec6f86 100644 Binary files a/project/target/classes/com/movieratings/analysis/DataAnalyzer$DirectorStats.class and b/project/target/classes/com/movieratings/analysis/DataAnalyzer$DirectorStats.class differ diff --git a/project/target/classes/com/movieratings/analysis/DataAnalyzer.class b/project/target/classes/com/movieratings/analysis/DataAnalyzer.class index 55fa032..ece1886 100644 Binary files a/project/target/classes/com/movieratings/analysis/DataAnalyzer.class and b/project/target/classes/com/movieratings/analysis/DataAnalyzer.class differ diff --git a/project/target/classes/com/movieratings/controller/DirectorController.class b/project/target/classes/com/movieratings/controller/DirectorController.class index 320dfa4..d43e606 100644 Binary files a/project/target/classes/com/movieratings/controller/DirectorController.class and b/project/target/classes/com/movieratings/controller/DirectorController.class differ diff --git a/project/target/classes/com/movieratings/crawler/MovieCrawler.class b/project/target/classes/com/movieratings/crawler/MovieCrawler.class index 7192363..1ca7862 100644 Binary files a/project/target/classes/com/movieratings/crawler/MovieCrawler.class and b/project/target/classes/com/movieratings/crawler/MovieCrawler.class differ diff --git a/project/target/classes/com/movieratings/display/ResultDisplay.class b/project/target/classes/com/movieratings/display/ResultDisplay.class index 132e0d2..5fbe95e 100644 Binary files a/project/target/classes/com/movieratings/display/ResultDisplay.class and b/project/target/classes/com/movieratings/display/ResultDisplay.class differ diff --git a/project/target/classes/com/movieratings/model/DirectorStats.class b/project/target/classes/com/movieratings/model/DirectorStats.class index d9ffd2d..0c0120c 100644 Binary files a/project/target/classes/com/movieratings/model/DirectorStats.class and b/project/target/classes/com/movieratings/model/DirectorStats.class differ diff --git a/project/target/classes/com/movieratings/model/Movie.class b/project/target/classes/com/movieratings/model/Movie.class index e5c890b..b0953ae 100644 Binary files a/project/target/classes/com/movieratings/model/Movie.class and b/project/target/classes/com/movieratings/model/Movie.class differ diff --git a/project/target/classes/com/movieratings/repository/MovieRepository.class b/project/target/classes/com/movieratings/repository/MovieRepository.class index 3a1ebc2..9db9f75 100644 Binary files a/project/target/classes/com/movieratings/repository/MovieRepository.class and b/project/target/classes/com/movieratings/repository/MovieRepository.class differ diff --git a/project/target/classes/com/movieratings/service/MovieService.class b/project/target/classes/com/movieratings/service/MovieService.class index ae94b49..b60fde7 100644 Binary files a/project/target/classes/com/movieratings/service/MovieService.class and b/project/target/classes/com/movieratings/service/MovieService.class differ diff --git a/project/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/project/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 7b8406c..5504aab 100644 --- a/project/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/project/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -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 diff --git a/project/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/project/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst index a44559d..b9a21e0 100644 --- a/project/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ b/project/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -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 diff --git a/project/target/surefire-reports/TEST-com.movieratings.analysis.DataAnalyzerTest.xml b/project/target/surefire-reports/TEST-com.movieratings.analysis.DataAnalyzerTest.xml index 8272d01..95688b3 100644 --- a/project/target/surefire-reports/TEST-com.movieratings.analysis.DataAnalyzerTest.xml +++ b/project/target/surefire-reports/TEST-com.movieratings.analysis.DataAnalyzerTest.xml @@ -1,10 +1,10 @@ - + - + @@ -15,9 +15,9 @@ - + - + @@ -25,12 +25,12 @@ - + - + @@ -45,12 +45,12 @@ - + - + @@ -59,6 +59,6 @@ - - + + \ No newline at end of file diff --git a/project/target/surefire-reports/com.movieratings.analysis.DataAnalyzerTest.txt b/project/target/surefire-reports/com.movieratings.analysis.DataAnalyzerTest.txt index 9e31f69..47f2c5e 100644 --- a/project/target/surefire-reports/com.movieratings.analysis.DataAnalyzerTest.txt +++ b/project/target/surefire-reports/com.movieratings.analysis.DataAnalyzerTest.txt @@ -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 diff --git a/project/target/test-classes/com/movieratings/analysis/DataAnalyzerTest.class b/project/target/test-classes/com/movieratings/analysis/DataAnalyzerTest.class index 5f1fd86..018f931 100644 Binary files a/project/target/test-classes/com/movieratings/analysis/DataAnalyzerTest.class and b/project/target/test-classes/com/movieratings/analysis/DataAnalyzerTest.class differ diff --git a/w1/TemperatureConverter.java b/w1/TemperatureConverter.java index af5f366..01aec8c 100644 --- a/w1/TemperatureConverter.java +++ b/w1/TemperatureConverter.java @@ -7,7 +7,7 @@ import java.io.FileNotFoundException; * 支持摄氏度(C)与华氏度(F)之间互转 * 增强版本:支持命令行参数和文件批量转换 */ -public class TemperatureConverter_PytoJava { +public class TemperatureConverter { /** * 将摄氏度转换为华氏度。 diff --git a/w3/Car.java b/w3/Car.java index 09dba88..fb2cced 100644 --- a/w3/Car.java +++ b/w3/Car.java @@ -1,4 +1,4 @@ -package JavaLearningProject.w3; +package JavaLearningProject.java.w3; public class Car { private String licensePlate; diff --git a/w3/CarRunner.java b/w3/CarRunner.java index d92413a..dea553f 100644 --- a/w3/CarRunner.java +++ b/w3/CarRunner.java @@ -1,4 +1,4 @@ -package JavaLearningProject.w3; +package JavaLearningProject.java.w3; public class CarRunner { public static void main(String[] args) { diff --git a/w4/AI.txt b/w4/AI.txt new file mode 100644 index 0000000..cfcb4ad --- /dev/null +++ b/w4/AI.txt @@ -0,0 +1,2 @@ +Prompt:帮助我正确运行Main.java,完成之后写一份修复流程和报错原因的readme +帮我用python绘制w4的类图 diff --git a/w4/Circle.class b/w4/Circle.class new file mode 100644 index 0000000..d641e5d Binary files /dev/null and b/w4/Circle.class differ diff --git a/w4/Circle.java b/w4/Circle.java new file mode 100644 index 0000000..37d5664 --- /dev/null +++ b/w4/Circle.java @@ -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; + } +} diff --git a/w4/Main.class b/w4/Main.class new file mode 100644 index 0000000..e12a41d Binary files /dev/null and b/w4/Main.class differ diff --git a/w4/Main.java b/w4/Main.java new file mode 100644 index 0000000..83520ec --- /dev/null +++ b/w4/Main.java @@ -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); + } +} diff --git a/w4/QQ20260326-202006.png b/w4/QQ20260326-202006.png new file mode 100644 index 0000000..ab5f423 Binary files /dev/null and b/w4/QQ20260326-202006.png differ diff --git a/w4/README.md b/w4/README.md new file mode 100644 index 0000000..21bead8 --- /dev/null +++ b/w4/README.md @@ -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+ 才能使用 `&&`。 diff --git a/w4/Rectangle.class b/w4/Rectangle.class new file mode 100644 index 0000000..436799e Binary files /dev/null and b/w4/Rectangle.class differ diff --git a/w4/Rectangle.java b/w4/Rectangle.java new file mode 100644 index 0000000..2c7db7d --- /dev/null +++ b/w4/Rectangle.java @@ -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; + } +} diff --git a/w4/ShapeUtil.class b/w4/ShapeUtil.class new file mode 100644 index 0000000..0925b71 Binary files /dev/null and b/w4/ShapeUtil.class differ diff --git a/w4/ShapeUtil.java b/w4/ShapeUtil.java new file mode 100644 index 0000000..8d449e3 --- /dev/null +++ b/w4/ShapeUtil.java @@ -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); + } +} diff --git a/w4/Triangle.class b/w4/Triangle.class new file mode 100644 index 0000000..8249262 Binary files /dev/null and b/w4/Triangle.class differ diff --git a/w4/Triangle.java b/w4/Triangle.java new file mode 100644 index 0000000..ba491f3 --- /dev/null +++ b/w4/Triangle.java @@ -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; + } +} diff --git a/w4/class_diagram_matplotlib.png b/w4/class_diagram_matplotlib.png new file mode 100644 index 0000000..05a57d2 Binary files /dev/null and b/w4/class_diagram_matplotlib.png differ diff --git a/w4/shape.class b/w4/shape.class new file mode 100644 index 0000000..ac2872b Binary files /dev/null and b/w4/shape.class differ diff --git a/w4/shape.java b/w4/shape.java new file mode 100644 index 0000000..b607161 --- /dev/null +++ b/w4/shape.java @@ -0,0 +1,3 @@ +public abstract class shape { + public abstract double getArea(); +}