【问题标题】:How to use a jar file that has been updated (Using a command line)如何使用已更新的 jar 文件(使用命令行)
【发布时间】:2017-04-18 08:38:15
【问题描述】:

我正在尝试使用来自http://algs4.cs.princeton.edu/code/ 的 jar 文件。我已经下载了 jar 文件,将它放在 CLASSPATH 中,但每次我尝试在命令行中运行我的程序时,我都会收到消息“包不存在”。

jar文件是algs4.jar

在网站上说“截至 2015 年 8 月 17 日,algs4.jar 的“默认包”版本已被“命名包”版本替换。要访问 algs4.jar 中的类,您需要使用如下导入语句:

import edu.princeton.cs.algs4.MinPQ;
import edu.princeton.cs.algs4.StdIn;

" 我认为这是主要问题,因为我不太明白他们在说什么(这是我第一次使用 jar 文件)

代码(二分查找):

import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.In;
import java.util.Arrays;
public class BinarySearch
{
    public static int rank(int key, int[] a)
    { // Array must be sorted.
        int lo = 0;
        int hi = a.length - 1;
        while (lo <= hi)
        { // Key is in a[lo..hi] or not present.
            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())
        { // Read key, print if not in whitelist.
            int key = StdIn.readInt();
            if (rank(key, whitelist) < 0)
                StdOut.println(key);
        }
    }
}

编辑: 我使用的命令:Javac -cp .;edu.princeton.cs.algs4.jar BinarySearch.java

jar 文件是 algs4.jar 不是 edu.princeton.cs.algs4.jar

【问题讨论】:

  • jar 文件是 zip 文件。打开它,看看你里面有没有这个包裹。请注意,过渡到新的包结构不会神奇地发生。如果您有一个没有该结构的旧 jar,则需要下载较新的 jar。您还需要告诉我们您是如何尝试编译和运行代码的。
  • .jar 文件本身是名为algs4.jar 还是实际文件名是edu.princeton.cs.algs4.jar
  • jar 文件被命名为 algs4.jar 在网站上它说“截至 2015 年 8 月 17 日,algs4.jar 的“默认包”版本已替换为“命名包”版本。要访问 algs4.jar 中的类,您需要使用如下导入语句:
  • 如果jar文件名为algs4.jar,为什么要在classpath选项中添加edu.princeton.cs.algs4.jar呢?您正在传递一个非退出文件的名称。

标签: java jar


【解决方案1】:

将 jar 文件放在项目的文件夹中,如果您使用的是 Eclipse,则在 Package explorer 中找到 jar 文件,右键单击 > 构建路径 > 添加到构建路径。之后,您将能够使用导入语句并像任何其他 Eclipse 项目一样正常编译。但是从终端/命令行编译有点棘手。

在这种情况下,最好的编译方法是在 Eclipse 中生成一个 ANT 构建文件。您可以谷歌生成 ANT 构建文件以及如何使用 ANT 进行编译。

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2011-05-08
    • 2013-03-29
    • 2015-03-15
    • 1970-01-01
    • 2017-08-28
    相关资源
    最近更新 更多