【问题标题】:NetBeans cannot find my Maven dependencyNetBeans 找不到我的 Maven 依赖项
【发布时间】:2017-06-23 14:21:43
【问题描述】:

我创建了一个 Maven 项目,并添加了我所需的依赖项。当我尝试构建项目时,出现以下错误:

我的依赖确实表明org.apache.poi 库在那里:

其中包括必要的软件包:

这是我的内容:

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;

我对 Java 比较陌生,对 Maven 也很陌生,但是当我右键单击时 DependenciesAdd Dependency,我输入适当的 groupID 和 ArtifactID 和版本,(as listed in Maven Central),它会自动下载文件。不知道我还缺少什么。任何帮助表示赞赏。

编辑:我应该注意我也尝试了手动安装工件并得到了相同的结果。

编辑:这是我的pom.xml 文件的依赖部分。我很好奇为什么当我有更多的库时,maven 只添加了两个,但这似乎是另一个问题。 POI 已在此处列出,这是编译器所抱怨的。

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.16</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.16</version>
        <type>pom</type>
    </dependency>
</dependencies>

【问题讨论】:

  • 请发布您的 ConvertXLSXtoCSV 代码和您的 pom.xml
  • 其余的代码确实与这个问题没有太大关系。这更像是一个 Maven 问题。不过,我将使用 pom.xml 内容进行更新。
  • 您的编译错误是否引用了您的导入行之一?或者您的编译器是否通过了您的导入?
  • 错误出现在导入行上,这就是整个问题。导入行是错误消息中引用的行。 (第 7-11 行)
  • 这不是您发布的配置的问题。你用的是什么IDE?我强烈怀疑这个问题与您的构建路径有关。如果您让我知道您使用的是什么 IDE,我可以让您验证您的依赖项是否位于构建路径中。到目前为止,您发布的内容是正确的,尽管在某些情况下不一致(例如,您发布的链接不包含您作为依赖项拥有的两个 POI 组件)

标签: java maven netbeans


【解决方案1】:

缺少信息

到目前为止,您在我的环境中发布的配置没有错误。我感觉它与您的类路径和/或 Netbeans 非类路径依赖项有关,但是我不能确定,因为我对您的项目没有必要的可见性。 GUI 是否将 &lt;type&gt; 元素添加到您的 POM.xml 中?

因此,我不会尝试通过问答来发现您遇到的问题,而是发布一个标准方法来设置此项目供您比较。

创建新项目

  1. 转到文件
  2. 新项目
  3. 类别Maven
  4. 项目 Java 应用程序

您将看到以下屏幕。

  1. 暂时保留默认设置,然后单击完成。您的项目现在应该具有以下结构

  1. 右键单击依赖文件夹,然后单击添加依赖。输入以下信息。

  1. 使用此信息再次执行以下操作

  1. 您的项目现在应该如下所示

  1. 通过转到 File、New File、Java Class 创建一个新类

  1. 输入以下代码/

你看到你的导入下面有一条红线吗?

package com.mycompany.mavenproject1;
import org.apache.poi.*;
public class Main {
    public static void main(String[] args) {

    }
}

右键单击您的项目,清理并构建。它会产生错误吗?如果可以,您可以发布您的控制台吗?

【讨论】:

  • 这就是奇怪的事情。我按照您列出的说明浏览了这些说明,但使用了默认的“NewClass”类名。我收到一条错误消息,说 org.apache.poi 不存在。我通过并将类名(和文件名)更改为Main/Main.java,然后构建成功。
  • 为了尝试重现这个错误,我将两个东西(文件名和类名)分别改回“NewClass.java”和“NewClass”,并进行了清理和构建,它再次出错。现在每次都会出错。或许与第一次不打扫有关系?不管怎样,我都被难住了。
  • 您使用的是什么 JDK?您的导入语句下是否有一条红线,或者您是否仅在清理和构建时才收到错误?您可以为我发布整个控制台吗?
【解决方案2】:

因此,尽管奇怪且针对特定站点,但解决方案仍然是解决方案。基本上情况是这样的:我在一家普通开发人员都使用 Windows 作为开发环境的公司工作。他们有特定的配置,允许他们穿透公司代理,以便他们可以访问外部 maven 存储库,这是其他所有人都没有的配置。因此,像 Eclipse(这里是普通的 IDE)这样的工具无法通过代理下载。作为一名前 Linux 系统管理员,我能够在 Linux VM 中使用 NetBeans 解决代理问题。然而,问题是我使用的所有 maven 配置都基于 Windows,这就是我最终在我的 settings.xml 文件中修复的内容:

<localRepository>c:\.m2\repository</localRepository>

应该是

<localRepository>.m2/repository</localRepository>

在 Linux 中。一旦我注意到这一点,并更改了设置(和目录名称),它每次都能完美运行。感谢所有回复的人。

【讨论】:

    【解决方案3】:

    有时 Netbeans 会在您编辑 pom 并且不从 maven 下载时感到困惑。只需对您的项目进行“清理和构建”,它就会下载依赖项。

    【讨论】:

      【解决方案4】:

      尝试使用import org.apache.*; 并删除所有手动导入。以防万一……

      此外,请确保您使用的是来自此 site 的依赖项信息

      我在 Eclipse 中使用您的依赖项进行了测试,使用 Maven 清理配置并成功运行

      【讨论】:

      • 尝试导入org.apache.*org.apache.poi.*org.apache.poi.ss.usermodel.*,效果相同,“不存在”是错误。(同时注释掉其他poi导入。)跨度>
      • 您尝试使用版本 3.15 还是 3.14?
      • 不——这不是代码问题,它表示它甚至无法找到库,即使它们是通过 Maven 自动下载的。不过我可以试试。
      • [for ubuntu] 当 Maven 成功构建项目时,它的依赖项会保存在您的主目录中名为 .m2(或其他名称)的隐藏文件夹中。也许您可以检查您的依赖项-jar 的存储位置
      • 它们在 ~/.m2/repository/org/apache/poi
      猜你喜欢
      • 2016-10-01
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      相关资源
      最近更新 更多