目录
准备
方法一
方法二
方法三
总结
首先:咱得有源代码和例子,这些从哪里来呢?
https://algs4.cs.princeton.edu/code/
点击上面的链接进入如下界面下载图中圈出的两个东西:
algs4.jar是整本书的程序的jar包,algs4-data.zip是本书中所有用例的压缩包。
至于还有个javadoc是帮助文档,可以不下。
至于有的博文提到的stdlib.jar是在https://algs4.cs.princeton.edu/11model/里面的,这个是本书封装的用于实现输入输出功能的jar包,包含在algs4.jar中。(所以也没必要下)
<2020-05-29 21:50> 现在来看看原来写的黑历史,其实 Java jar 就是为了方便使用第三方包而出现的,完全犯不着再解压一遍。下面讲一下过程:
当前目录结构是:
E:.
│ algs4.jar
│ BinarySearch.java
│ stdlib.jar
│
├─algs4-data
│ tinyW.txt
│ tinyT.txt
在命令行中进行下面这两个步骤即可:
1. 使用 javac -cp ".;algs4.jar" BinarySearch.java 编译 BinarySearch.java。这里 -cp 是 -classpath 的简写,目的是让 javac 知道去哪里找到 BinarySearch.java 中使用的 In 等类。
2. 使用 java -cp ".;algs4.jar" edu.princeton.cs.algs4.BinarySearch algs4-data/tinyW.txt < algs4-data/tinyT.txt 运行编译好的字节码。其中加上 edu.princeton.cs.algs4 的原因是 BinarySearch.java 里有 package edu.princeton.cs.algs4; 这一行。
下面的其实就不用看了。
-------------------------------------
其次:下载并解压好了后(.jar在windows下可以用自带的rar解压),咱们就有algs4和algs4-data两个文件夹了。
我们可以在algs4文件夹下找到本书中的所有源程序(我是用del *.class把.class都删了)
在algs4-data文件夹下找到所有样例
下面就是如何运行BinarySearch.java
第一步:把algs4文件夹下的edu文件夹复制到一个文件夹中,再将BinarySearch.java所依赖的用例复制出来,放到同一目录下。BinarySearch.java所依赖的用例在文件最上面有说明。
注意上面的BinarySearch.java里面要作出如下修改:
第二步:打开命令行,移动到上图圈出的BinarySearch.java所在的文件夹
键入BinarySearch.java最上面的两个命令即可
这里的javac和java命令需要配置好环境变量,如果没有配置好又懒得配置的话,可以到jdk的bin目录下把java.exe和javac.exe复制到同一目录试试,就像下图这样。
此处有个小提醒:javac后面跟的参数是文件名,但java 后面跟的是类名
与方法一的区别在于使用了jar包
第一步:将algs4文件夹下的edu文件夹复制到一个文件夹中,再将algs4.jar复制到该文件夹下
ps.这个edu文件夹是由algs4.jar解压后得来的不经过任何处理的,有如下特征
第二步:打开cmd,cd进入到BinarySearch.java的目录下,执行如下命令
这里涉及到的主要命令有:
//javac -cp jar包的绝对路径 .java文件 执行的文件夹为下图一
javac -cp E:\Algorithm-4th\jar\algs4.jar BinarySearch.java
//执行的文件夹为下图二 ps. 这里我和参考的不太一样,不知道为什么
java -cp E:\Algorithm-4th\jar\algs4.jar edu.princeton.cs.algs4.BinarySearch tinyW.txt < tinyT.txt
java与javac命令行的classpath选项可以看看:http://www.cnblogs.com/JeffChen/archive/2008/01/15/1039708.html
这里参考了
java带jar包的命令行的运行:http://blog.sina.com.cn/s/blog_620b085d0100iwwt.html
我是在http://www.cnblogs.com/zhcncn/p/4689225.html的参考资料里看到的sina的这条博文
找不到主类:java编译通过,为什么运行却提示找不到或无法加载主类? - 顾志方的回答 - 知乎https://www.zhihu.com/question/36537093/answer/206814470
对于这个java命令https://blog.csdn.net/sxzlc/article/details/73744721讲的很清楚,比知乎的更形象
第一步:将algs文件夹下的所有程序复制到一个单独的文件夹里
第二步:在该文件夹下创建一个txt文件,里面键入
Set WshShell = CreateObject("Wscript.Shell")
WshShell.Run "cmd /c dir /s/b *.java > list.java",vbHide
Wscript.Sleep 1000
sFile = "list.java"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = objFSO.OpenTextFile(sFile,1)
Do While Not oFile.AtEndOfStream
strLine = oFile.ReadLine
If Len(strLine) > 0 Then
Set File = objFSO.OpenTextFile(strLine, 1)
aryLines = File.ReadAll
File.Close
aryLines = Replace(aryLines, "package edu.princeton.cs.algs4;", "")
Set File = objFSO.OpenTextFile(strLine, 2)
File.Write aryLines
File.Close
End If
Loop
oFile.Close
objFSO.DeleteFile sFile
Set objFSO = Nothing
更改文件名为.vbs,双击运行
ps. 这一步的目的是去掉所有文件中的package edu.princeton.cs.algs4;这一句,可以使用其他方式实现。
第三步:把BinarySearch.java所依赖的用例导入到该目录下(我把本书所有用例都导了)
第四步:见方法一的第二步
与java的类的作用域有关
涉及到package,可以看下https://blog.csdn.net/hittata/article/details/4231276这篇文章
本文参考了:
https://zhidao.baidu.com/question/119624330.html里的vb程序
https://blog.csdn.net/kazama_kenji/article/details/51607781