使用java-algs4编译运行Java程序报错找不到主类如何解决?
问题原因
你遇到的报错由两个常见错误共同导致:
- 运行Java程序时错误添加了
.class后缀,Java虚拟机接收的参数是类名而非类文件名 - 代码顶部的包声明和实际目录结构不匹配
解决步骤(最简单方案)
- 编辑
Ortho.java文件,删除第一行的package edu.princeton.cs.algs4;,同时把类定义修改为public class Ortho保证主类可以被正确识别。
修改后的代码示例:
import java.util.Arrays; public class Ortho{ public static void main(String args[]){ // Read files from input and print statements In in = new In(args[0]); String[] list = in.readAllStrings(); //parse the first text input while (!StdIn.isEmpty()) { String key = StdIn.readString(); System.out.print(key); } } }
- 重新执行编译命令:
javac-algs4 Ortho.java - 执行正确的运行命令,去掉
.class后缀:java-algs4 Ortho text_1.txt < text_2.txt
可选方案(保留包声明)
如果你需要保留原有的包声明,按照以下步骤操作:
- 编译时添加
-d参数自动生成包目录结构:javac-algs4 -d . Ortho.java
执行后会自动在当前目录生成edu/princeton/cs/algs4/目录,编译好的Ortho.class会自动放到该目录下 - 运行时使用全限定类名:
java-algs4 edu.princeton.cs.algs4.Ortho text_1.txt < text_2.txt
内容的提问来源于stack exchange,提问作者Occhima
相关产品推荐
相关产品推荐

