2013-10-05 24 views
1

我在Windows 7 64x机器上使用Eclipse。我研究过这个问题,发现很多人都有类似的问题,但是我遇到的解决方案并没有为我工作。在我的项目中使用源于jar文件的类

我正在研究名为Assignment_1的项目,名为Percolation。我想使用对象WeightedQuickUnionUF,它位于包含在jar文件中的包中,名为algs4.jar

我似乎已将我感兴趣的Jar文件添加到构建路径(它现在出现在“引用的库”下)。 jar文件algs4.jar驻留在我的项目文件夹中名为lib的文件夹中。

但是,当我尝试在类中声明类型为WeightedQuickUnionUF的对象时,出现“WeightedQuickUnionUF无法解析为类型”错误。

在类声明之前我尝试了各种import命令(包括只是import WeightedQuickUnionUF),并且它们全都产生错误“导入so and so无法解析”。

例如,这段代码会产生这两个错误。一个在import线,另一个位于WeightedQuickUnionUF对象的声明:

package assignment_1_package; 
import algs4.WeightedQuickUnionUF; 

public class Percolation { 

    private int[][] grid; 
    public int gridDimension; 
    private int opensGrid[][]; 
    private WeightedQuickUnionUF model; 

... //rest of class body here 

这把我难倒了一整天,我似乎无法想出解决办法。感谢您的努力。

编辑:这里是我想要导入的类的链接:http://algs4.cs.princeton.edu/15uf/WeightedQuickUnionUF.java.html

+0

ü可以分享WeightedQuickUnionUF类? –

+0

它在这里:http://algs4.cs.princeton.edu/15uf/WeightedQuickUnionUF.java.html –

+1

http://stackoverflow.com/questions/283816/how-to-access-java-classes-in -default-package –

回答

3

假设你正在谈论的类http://algs4.cs.princeton.edu/code/的algs4.jar,您的导入是不正确,你应该做的:

import WeightedQuickUnionUF; 

它从来就没有在默认包中的类一个好主意,它实际上是不允许从命名的包导入型:这一点让编译错误http://docs.oracle.com/javase/specs/jls/se5.0/html/packages.html#7.4.2

A型导入点播声明(第7.5.2节)进口的所有 访问(6.6节)需要类型命名类型或包。 从未命名包导入一个类型的编译时错误是 。

因此,在您的情况下,解决您的问题只需在默认包中创建您的类,所以你根本不需要进行导入。

+0

我试过导入,并得到相同的错误。你说得对,这是我得到jar文件的地方。 当我展开jar文件来查看它的类时,我首先必须点击'(默认包)'。这不是一个包吗? –

+0

您必须在Eclipse项目设置中遇到问题。 –

+0

无论如何,它有一个“主”类?我目前没有一个在我的项目中。 无论如何,你是否知道我的项目设置有什么问题?无论如何感谢您的意见。 :) –

0

我在同一班,有同样的问题。删除我的等同于这两个陈述

package assignment_1_package; 
    import algs4.WeightedQuickUnionUF; 

解决了这个问题。这就是说,现在下面正确地将

private WeightedQuickUnionUF model; 
0

解决了我的情况下,它有助于增加

import edu.princeton.cs.algs4.StdRandom; 
import edu.princeton.cs.algs4.StdStats; 
import edu.princeton.cs.algs4.WeightedQuickUnionUF; 
相关问题