26

我已经开始 Coursera算法课程。练习作业必须在Java上完成,他们建议使用DrJava作为IDE,但这真的很不方便。所以我想使用 Eclipse,但问题是我无法使用为本课程提供的2 个库( algs4.jarstdlib.jar )。完成本指南中的步骤后,我能够将它们包含在我的项目中:

在此处输入图像描述

但是当我尝试在我的项目中使用他们的类时,Eclipse 不允许这样做,我无法通过Ctrl+导入它们Space

在此处输入图像描述

即使我尝试直接导入类,import stdlib.StdRandom;它仍然不起作用。

我该怎么做才能使其正常工作?

4

10 回答 10

20

为什么不使用这两个 JAR——stdlib-package.jar 和 algs4-package.jar。

并在代码页下方(http://algs4.cs.princeton.edu/code/

问:如果我使用命名包来构造我的代码,编译器将无法再访问 stdlib.jar 或 algs4.jar 中的库。为什么不?

A. stdlib.jar 和 algs4.jar 中的库位于“默认”包中。在 Java 中,您不能从命名包访问默认包中的类。如果您需要将我们的库与命名包一起使用,您可以使用以下包版本:stdlib-package.jar 和 algs4-package.jar。

警告:如果您正在学习 Princeton COS 226 或 Coursera, Algorithms, Part I 或 II,您必须使用我们图书馆的默认软件包版本以方便评分。

显示我的测试成功: 显示我的测试成功

于 2014-01-12T16:14:30.543 回答
12

您无法访问这些 API,因为作者已在默认包中定义了它们,而 Java 无法识别它们。作者在他们的网站 ( http://algs4.cs.princeton.edu/code/ ) 上提到,如果您在命名包中使用这些,请配置您的构建路径以包含来自http://algs4.cs.princeton的 jar .edu/code/algs4.jar

于 2013-08-01T00:07:47.510 回答
6

请按照以下步骤操作

右键单击您的项目 > 属性。它将打开以下窗口

在此处输入图像描述

从左侧选择“Java Build Path”。现在从右侧选择“库”选项卡

在此处输入图像描述

点击“添加外部罐子”

在此处输入图像描述

添加 Jar 文件。

现在你完成了

于 2013-02-21T17:53:07.273 回答
5

为了包含 JAR,您需要做的就是右键单击左侧项目资源管理器面板中项目/对象树的顶部,执行“构建路径/配置构建路径”,单击“库”选项卡,然后“添加外部罐子”,将它们添加到那里。

在编辑您的源代码以及之后在 Eclipse 中构建它时,它们应该很高兴可以使用。

另请注意,假设您在键入时具有正确的类名,您应该能够将鼠标悬停在代码中的类名上,智能感知/自动完成功能将建议您应该从哪里导入它。您可以通过这种方式轻松地将导入添加到正确的库中。

于 2013-02-21T17:12:33.550 回答
2

一种选择是slok提供的github 上有一个maven repo 。不好的部分是添加的 jar 是那些使用默认包的,所以你不能使用包结构。

更新:我已将 jar 的包版本添加到 repo 并创建了一个现在已被接受的拉取请求。

请注意,我已更改标识符以匹配普林斯顿的原始包结构。

<dependencies>
  <dependency>
    <groupId>edu.princeton.cs.introcs</groupId>
    <artifactId>algs4-package</artifactId>
    <version>1.0</version>
  </dependency>

  <dependency>
    <groupId>edu.princeton.cs.introcs</groupId>
    <artifactId>stdlib-package</artifactId>
    <version>1.0</version>
  </dependency>
</dependencies>

<repositories>
  <repository>
    <id>org.coursera.algs4</id>
    <name>Algs4 coursera course custom repository</name>
    <url>https://raw.github.com/slok/algs4-mvn-repo/master</url>
  </repository>
</repositories>
于 2014-07-05T07:44:49.727 回答
2

从他们的网站:http ://algs4.cs.princeton.edu/code/

日食(手动)。将 stdlib.jar 和 algs4.jar 下载到一个文件夹,然后通过 Project -> >Properties -> Java Build Path -> Libaries -> Add External JARs 将每个 jar >file 添加到 classpath 变量到项目的构建路径中。

于 2015-04-05T16:36:28.357 回答
2

在 Gradle 的情况下,在 build.gradle 的 repositories 部分添加 maven 存储库条目,如下所示:

repositories {
    mavenCentral()
    maven {
        url 'https://dl.bintray.com/algs4/maven/'
    }
}

添加依赖如下:

compile group: 'edu.princeton.cs', name: 'algs4', version: '1.0.4'

如果是 Maven,请在 build.xml 中添加 repositories 标签中的条目,如下所示:

<repositories>
  <repository>
    <id>org.coursera.algs4</id>
    <name>Algs4 lib</name>
    <url>https://dl.bintray.com/algs4/maven/</url>
  </repository>
</repositories>

添加依赖如下:

<dependencies>
  <dependency>
    <groupId>edu.princeton.cs</groupId>
    <artifactId>algs4</artifactId>
    <version>1.0.4</version>
  </dependency>
</dependencies>
于 2019-06-10T22:43:26.797 回答
1

可能是因为库中没有包结构,所以不能从中导入类。这可能会对您有所帮助,如何在 Eclipse 中使用引用库中的类

于 2013-02-21T18:04:46.657 回答
1

如果您仍然在寻找解决方案:-

OS X / Linux

% javac -cp .:stdlib.jar MyProgram.java % java -cp .:stdlib.jar MyProgram

视窗

% javac -cp .;stdlib.jar MyProgram.java % java -cp .;stdlib.jar MyProgram

参考:- https://introcs.cs.princeton.edu/java/stdlib/

于 2019-01-01T07:32:06.653 回答
0

我正在使用Gradle。在这种情况下,build.gradle文件应该有一个依赖项,看起来像

repositories {
    jcenter()
}

dependencies {
    compile 'edu.princeton.cs:algs4:1.0.3'
}

在此之后,您可以在课堂上从中导入任何内容。例如:

import edu.princeton.cs.algs4.StdIn;
于 2019-03-07T07:54:16.950 回答