Java程序报错:无法找到或加载主类BasicSorting_1求助
错误原因分析与解决方案
报错信息
Error: Could not find or load main class BasicSorting_1
Caused by: java.lang.NoClassDefFoundError: Sorting/BasicSorting_1 (wrong name: BasicSorting_1)
原因分析
这个错误的核心问题是包结构与文件存放路径不匹配,加上编译运行的命令执行方式错误:
- 代码开头声明了
package Sorting;,说明该类属于Sorting包,对应的Java文件必须放在名为Sorting的子目录下 - 直接在文件所在目录编译运行,没有遵循包结构的要求,导致JVM无法定位到正确的类路径
解决方法
步骤1:调整文件目录结构
- 在当前工作目录下创建一个名为
Sorting的文件夹 - 将
BasicSorting_1.java文件移动到Sorting文件夹中
步骤2:编译与运行命令
- 编译:回到工作目录(即
Sorting文件夹的父目录),执行编译命令:javac Sorting/BasicSorting_1.java - 运行:同样在父目录下,使用带包名的完整类名运行:
java Sorting.BasicSorting_1
可正常运行的代码(含小优化)
package Sorting; import java.util.*; public class BasicSorting_1 { public static void bubbleSort(int num[]) { int n = num.length; for (int turn = 0; turn < n - 1; turn++) { // 优化内层循环:跳过已排好序的末尾元素 for (int j = 0; j < n - 1 - turn; j++) { if (num[j] > num[j + 1]) { // 交换元素 int temp = num[j]; num[j] = num[j + 1]; num[j + 1] = temp; } } } } public static void display(int num[]) { int n = num.length; for (int i = 0; i < n; i++) { System.out.print(num[i] + " "); } System.out.println(); } public static void main(String[] args) { int num[] = { 2, 3, 1, 7, 5 }; bubbleSort(num); display(num); } }
内容的提问来源于stack exchange,提问作者Gulshan Kumar
相关产品推荐
相关产品推荐

