【问题标题】:classes of jar file cannot be imported in netbeansjar文件的类不能在netbeans中导入
【发布时间】:2013-07-24 10:07:21
【问题描述】:

我从一堆 java 文件中创建了一个 jar 文件。文件夹结构为org/ax/redis。我使用了命令jar cvf jedis.jar org/*。然后我在我的 netbeans 项目中导入了这个 jar 文件。然后当我尝试从它导入类时,写import org.ax.redis.*。但是,netbeans 显示不存在此类包的错误。

现在我打开了另一个 log4j 的 jar 文件,看看它的内部情况。唯一的区别在于清单文件。它有一堆指令,比如Name: org/apache/log4j/。所以我通过包含Name: org/ax/redis/ 为我的jar 文件创建了一个清单文件。使用此命令在我的 jar jar cvfm jedis.jar META-INF/manifest.txt org/* 中添加清单信息。仍然没有任何效果。请帮帮我

【问题讨论】:

  • 您是从.java 文件还是.class 文件创建的jar 文件?仅包含源代码的 jar 文件不能用作库...你能说明如果你运行 jar tvf jedis.jar 会发生什么吗?
  • 我点击了您指定的命令,它向我显示了 jar 文件中所有 .java 文件的列表。是的,我多么愚蠢,竟然没有注意到 log4j 的 jar 文件和我的 jar 文件的最大区别。他们拥有所有 .class 文件。
  • 您希望我将其添加为答案,还是要删除该问题?
  • 哦,请添加答案。我喜欢保留我提出的所有问题,作为评论列表,无论它们可能多么愚蠢;)

标签: java netbeans jar


【解决方案1】:

Jar 文件通常包含类文件(编译结果)而不是 source 文件 (*.java)。虽然某些 jar 文件可能同时包含两者,但只有类文件可用于编译或运行(例如,使用 -cp library.jar)。

所以基本上,在构建 jar 文件之前,您需要编译代码 - 然后将类文件包含在 jar 文件中。如果您也包含源文件(在相同的目录结构中),那么某些 IDE 可能能够检测到这一点,这可能很有用。

【讨论】:

    【解决方案2】:

    即使你不生成 .class 文件,仍然可以导入包并且不会显示任何编译错误(如果你没有指定任何特定的类)。但是当你尝试使用该包的特定类函数时,它会抛出一个错误。

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 2012-05-12
      • 2013-07-25
      • 2020-02-27
      • 2020-04-03
      • 1970-01-01
      • 2017-05-22
      • 2017-08-08
      • 2012-03-21
      相关资源
      最近更新 更多