我已经开始使用Coursera Algorythms course。练习作业必须在Java上完成,他们建议使用DrJava作为IDE,但它真的很不方便。所以我想使用Eclipse,但问题是我无法使用为本课程提供的2个库(algs4.jar和stdlib.jar)。在完成this guide的步骤后,我能够将它们包含在我的项目中:
但是当我尝试在我的项目中使用他们的类时,Eclipse不允许这样做,我无法通过 Ctrl + Space 导入它们:
即使我尝试直接导入像import stdlib.StdRandom;
这样的类,它仍然无效。
如何才能使其正常运作?
答案 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来促进评分。
显示我的测试成功:
答案 1 :(得分:9)
您无法访问API,因为作者已在默认包中定义它们,而Java无法识别这些API。作者在他们的网站(http://algs4.cs.princeton.edu/code/)上提到,如果您在命名包中使用这些,请配置您的构建路径以包含来自http://algs4.cs.princeton.edu/code/stdlib-package.jar和http://algs4.cs.princeton.edu/code/algs4-package.jar的两个jar。
HTH!
答案 2 :(得分:5)
要包含JAR,您只需右键单击左侧项目资源管理器面板中项目/对象树的顶部,执行“构建路径/配置构建路径”,然后单击“库”选项卡和“添加外部罐子”,将它们添加到那里。
在编辑源代码和在Eclipse之后构建它时,它们应该很高兴可用。
另请注意,假设您在键入时具有正确的班级名称,您应该能够将鼠标悬停在代码中的班级名称上,而智能/自动完成功能将建议您从哪里导入它。您可以轻松地将导入添加到正确的库中。
答案 3 :(得分:4)
按照以下步骤
右键点击您的项目>属性。它将打开以下窗口
从左侧选择“Java Build Path”。现在从右侧选择“库”选项卡
点击“添加外部罐子”
添加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
答案 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>