1.问题描述
算法(第四版)的配套源代码,从 Github 导入本地 idea(MacOS),用 gradle 编译后,直接在命令行用 java 交互,报错如下
algs4 on learner [!+] via ☕ v14.0.2
❯ java RandomSeq 5 100.0 200.0
错误: 找不到或无法加载主类 RandomSeq
原因: java.lang.ClassNotFoundException: RandomSeq
注释示例输出
******************************************************************************
* Compilation: javac RandomSeq.java
* Execution: java RandomSeq n lo hi
* Dependencies: StdOut.java
*
* Prints N numbers between lo and hi.
*
* % java RandomSeq 5 100.0 200.0
* 123.43
* 153.13
* 144.38
* 155.18
* 104.02
*
******************************************************************************/
package edu.princeton.cs.algs4;
2.解决办法
添加环境变量参数,导向 classes 地址
-classpath <path/to/classes>
按 tab键 带出已经编译完成的 class 文件
edu.princeton.cs.algs4.<className>
algs4 on learner [!+] via ☕ v14.0.2
❯ java -classpath /Users/yourusername/IdeaProjects/algs4/target/classes edu.princeton.cs.algs4.RandomSeq 5 100.0 200.0
106.20
151.04
190.87
136.10
119.19
3.避坑指南
Java 所有的对象都是 JDK + 参数 包括 IDEA 软件本身也是一个拼凑参数的容器。
所以,运行其他类的实例成功时,我在结果顶部位置,找到的这一串参数,参考修改,运行一下就成功了。
此外
-
本书作者提供的库,重写了很多类,我们为了避免污染系统环境变量,不建议将它添加到
{$PATH}
。 -
保存这一串代码到微信收藏夹,每次用到命令行交互都要添加这么一长串参数。
-
我还试过配置zsh
alias
,但反馈 BAD alias ,暂时没想到更好的解决方案。 -
IDEA 项目配置,设置输出文件,没有效果,还是需要拼这一长串参数。