<算法 第四版>的 Java 环境配置问题: 警告: [deprecation] In 中的 readInts(String)已过时

2016-08-25 20:02:39 +08:00
 Scicomath

最近在看<算法 第四版>, 这本书是基于 Java 写的. 在配置 Java 环境的时候遇到一些问题. 由于之前没用过 Java, 所以来问一下到底是什么情况.

问题背景:

首先, 这本书的作者定义一些自己写的输入输出库, 在书的官网中给出了库文件algs4.jar. 我下载了库文件, 并且按照官网的说明, 讲文件放在了~/algs4/下面, 并且在.bashrc 中修改了 CLASSPATH 环境变量:

export CLASSPATH=$CLASSPATH:~/algs4/algs4.jar

然后试着编译运行一个书中一个简单的示例程序:

import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
import java.util.Arrays;

public class BinarySearch
{
    public static int rank(int key, int[] a)
    {
	int lo = 0;
	int hi = a.length - 1;
	while (lo <= hi) {
	    int mid = lo + (hi - lo) / 2;
	    if (key < a[mid])
		hi = mid - 1;
	    else if (key > a[mid])
		lo = mid + 1;
	    else
		return mid;
	}
	return -1;
    }

    public static void main(String[] args)
    {
	int[] whitelist = In.readInts(args[0]);

	Arrays.sort(whitelist);

	while (!StdIn.isEmpty()) {
	    int key = StdIn.readInt();
	    if (rank(key, whitelist) == -1)
		StdOut.println(key);
	}
    }
}

其中用到了作者提供的几个函数: In, StdIn, StdOut. 但是我在编译的时候报错如下:

$ javac BinarySearch.java 
注: BinarySearch.java 使用或覆盖了已过时的 API 。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

然后我按照提示添加了-Xlint:deprecation选项, 再次编译:

$ javac BinarySearch.java -Xlint:deprecation
BinarySearch.java:26: 警告: [deprecation] In 中的 readInts(String)已过时
	int[] whitelist = In.readInts(args[0]);
	                    ^
1 个警告

虽然提示警告但是仍然生成了BinarySearch.class文件, 于是我试着运行了一下, 果然有问题:

$ java BinarySearch.class
错误: 找不到或无法加载主类 BinarySearch.class

这到底是什么问题呢? 是因为 JDK 太新了吗?

PS:我之前安装的是 JDK8, 后来出现了上面的问题, 然后我又换成了 JDK7, 但是问题依然存在.

10259 次点击
所在节点    Java
22 条回复
flaneur0py
2016-09-10 12:50:31 +08:00
其实不需要用文件输入,输入完字符之后回车+(ctrl+d)就可以
ljw97
2020-07-09 17:54:04 +08:00
哈哈,同一个难住了 2020 年的我了。。感谢的大家

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/301773

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX