【问题标题】:Using classes in my project that originate in a jar file在我的项目中使用源自 jar 文件的类
【发布时间】:2013-10-05 15:53:25
【问题描述】:

我在 Windows 7 64x 机器上使用 Eclipse。我研究了这个问题,发现很多人都遇到过类似的问题,但没有找到对我很有效的解决方案。

我正在开发一个名为 Assignment_1 的项目,该项目名为 Percolation。我想使用对象WeightedQuickUnionUF,它位于一个名为algs4.jar 的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

【问题讨论】:

标签: java eclipse jar classpath


【解决方案1】:

假设您正在谈论 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:

按需类型导入声明(第 7.5.2 节)导入所有 根据需要命名类型或包的可访问(第 6.6 节)类型。 这是一个 从未命名的包中导入类型的编译时错误

因此,在您的情况下,要解决您的问题,只需在默认包中创建您的类,这样您就不必进行导入了。

【讨论】:

  • 我尝试了该导入,但我得到了同样的错误。你是对的,这是我得到jar文件的地方。当我展开 jar 文件以查看其类时,我首先必须单击 (default package)。它不被视为一个包吗?
  • 您的 Eclipse 项目设置一定有问题。
  • 这是否与拥有main 课程有关?我的项目中目前没有。无论如何,您知道我的项目设置有什么问题吗?无论如何,感谢您的输入。 :)
  • 确实你是对的,不允许从默认包中导入类,这会产生编译错误,刚刚更新了我的答案
  • 只需在默认包中创建自己的类,它应该可以正常工作
【解决方案2】:

我在同一个班,遇到同样的问题。删除我对这两个语句的等效项

 package assignment_1_package; 
    import algs4.WeightedQuickUnionUF;

解决了这个问题。也就是说,以下现在正确解决了

 private WeightedQuickUnionUF model;

【讨论】:

    【解决方案3】:

    就我而言,它有助于添加

    import edu.princeton.cs.algs4.StdRandom;
    import edu.princeton.cs.algs4.StdStats;
    import edu.princeton.cs.algs4.WeightedQuickUnionUF;
    

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2012-04-16
      • 2021-06-04
      • 2012-11-13
      • 2014-05-25
      • 1970-01-01
      • 2014-08-06
      • 2015-12-26
      • 1970-01-01
      相关资源
      最近更新 更多