如何在Eclipse中使用库进行算法第一部分Coursera课程

时间:2013-02-21 17:03:09

标签: java eclipse ide

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

enter image description here

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

enter image description here

即使我尝试直接导入像import stdlib.StdRandom;这样的类,它仍然无效。

如何才能使其正常运作?

10 个答案:

答案 0 :(得分:17)

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

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

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

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

警告:如果你正在学习普林斯顿COS 226或Coursera,算法,第一部分或第二部分,你必须使用我们图书馆的默认包verison来促进评分。

显示我的测试成功: Showing my test success

答案 1 :(得分:9)

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

HTH!

答案 2 :(得分:5)

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

在编辑源代码和在Eclipse之后构建它时,它们应该很高兴可用。

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

答案 3 :(得分:4)

按照以下步骤

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

enter image description here

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

enter image description here

点击“添加外部罐子”

enter image description here

添加Jar文件。

现在你已经完成了

答案 4 :(得分:2)

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

  

Eclipse(手册)。将stdlib.jar和algs4.jar下载到一个文件夹,并通过Project - >将每个jar>文件添加到classpath变量到项目的构建路径。 >属性 - > Java构建路径 - > Libaries - >添加外部JAR。

答案 5 :(得分:1)

可能是因为库中没有包结构,因此您无法从中导入类。这可能会对您有所帮助How to use classes in Referenced Libraries in Eclipse

答案 6 :(得分:1)

一种选择是maven repo on github提供了slok。这个坏的部分是使用默认包的罐子,所以你不能使用包结构。

更新:我已将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>

答案 7 :(得分:0)

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

OS X / Linux

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

Windows

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

为了方便阅读:-https://introcs.cs.princeton.edu/java/stdlib/

答案 8 :(得分:0)

我正在使用 Gradle 。在这种情况下, build.gradle 文件应该具有依赖性,并且看起来像

repositories {
    jcenter()
}

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

此后,您可以在您的班级中导入任何内容。例如:

import edu.princeton.cs.algs4.StdIn;

答案 9 :(得分:0)

如果是Gradle,请在build.gradle的“存储库”部分中添加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>
  <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>