【问题标题】:Can’t import class from JAR despite JAR including it (Eclipse)尽管 JAR 包含它,但无法从 JAR 导入类(Eclipse)
【发布时间】:2024-12-28 12:20:02
【问题描述】:

在我的工作场所,我需要使用 git 在 Eclipse 中下载一个项目。事实证明 Eclipse 在导入时显示错误(“无法解析导入。”)。该项目需要 Maven 依赖项中包含的 JAR。

我搜索了 JAR 的内容,它们似乎包括正在搜索的内容(图片 #2 com.sun.jna.Native)。更有趣的是,从麻烦的 JAR 中导入了一个类,因此项目知道这些 JAR (com.sun.jna.platform.win32.WinUser) 的存在。

我尝试自己输入 import,看看输入帮助能走多远。我到了“com.sun.jna”,但找不到“.Native”部分。 我认为这是我的项目构建选项或 Eclipse 设置的问题,因为我的同事能够毫无问题地运行代码。我正在使用 Eclipse Neon。

感谢您花时间阅读我的问题。

附上图片:

  1. 问题概述。
  2. 搜索到的类包含在 JAR 中。
  3. 使用提示查看我在搜索搜索元素时可以走多远。 (发布的声誉太低)

附言。我是菜鸟

编辑 1: 我尝试更新 POM 依赖项。我希望能够在我的项目中导入的两个 jar 是 jna-4.1.0.jar 和 jna-platform-4.1.0.jar,因为它们似乎是导致问题的原因。

有关依赖项的详细信息,我去了这里: http://mvnrepository.com/artifact/net.java.dev.jna/jna/4.1.0 http://mvnrepository.com/artifact/net.java.dev.jna/jna-platform/4.1.0

我在 pom.xml 的依赖项部分添加了两个条目。

<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.1.0</version>
</dependency>

<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>4.1.0</version>
</dependency>

按 ctrl+s 时出现错误: 该项目未构建,因为其构建路径不完整。找不到 com.sun.jna.platform.win32.WinDef 的类文件。

在以前检测到错误的地方仍在检测到错误。

编辑 2:

不确定错误是否已完全解决,但看起来确实如此。我无法完全重新创建解决问题所采取的步骤。有一次,我开始随机点击很多东西。我相信它是右键单击项目-> Maven → 安装。这样做后,控制台打印了很多东西,其中有 Loc 标头错误。按照一些说明,我删除了计算机上已经下载的 jar 并使用 maven 重新下载它们(使用从 maven 控制台转到包含 pom 文件的文件夹)。 重新下载解决了这个问题。

抱歉,我无法提供分步解决方案,但其中涉及大量随机点击,而且是很久以前的事了。谢谢大家的帮助。

【问题讨论】:

  • jar 是否在 Eclipse 的构建路径中?检查您的项目文件和您同事的项目文件之间的差异。
  • 您的项目配置使用什么 JDK?和你同事的版本一样吗?
  • "java -version" java 版本 "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101) 的结果-b13,混合模式)
  • 我们没有比较我们的 JDK 版本,但可以肯定的是它是最新的或几乎是新的。我们已经比较了我们的项目文件,并且有类似的。 Jar 包含在项目中。证明i65.tinypic.com/6s6ex2.jpg
  • 你的pom是什么样的?

标签: java eclipse maven import jar


【解决方案1】:

问题在于你的包设置,你的类在包中找不到jar。如果这是一个 maven 项目(如您所说),您可以创建(或编辑现有的)pom 文件以包含您使用的每个 jar 的依赖项。然后,您甚至不需要附加它们,它会为您完成。如果您已经这样做了,但它仍然不起作用,请检查您的版本号。您可能有错误的版本号并尝试使用不再包含您正在导入的内容的 jar。您使用Maven central repository,搜索您的 jar 名称并找到正确的版本号。您在 pom.xml 文件中的 &lt;/build&gt; 之后,&lt;/project&gt; 选项卡之前添加它们,并为每个 jar 遵循以下结构:

</build>
  <dependencies>
    <dependency>
      <groupId>com.blahblah</groupId>
      <artifactId>desktopBlah</artifactId>
      <version>1.0.0.1-SNAPSHOT</version>
    </dependency>
  ...more dependencies listed her....
    </dependencies>
  </project>

【讨论】:

  • 干得好!我将已安装的 jar 引用为本地 maven 存储库,例如file://${project.basedir}/build-repo,但这还不够。添加依赖项解决了丢失的包。
【解决方案2】:

对于 jna 原生类,除了在 CLASSPATH 中包含 Jar 之外,您还需要在路径中包含相应的 DLL(%PATH% 变量)。

【讨论】:

    最近更新 更多