【问题标题】:Import and use a Maven managed Java library (CitySDK)导入和使用 Maven 托管 Java 库 (CitySDK)
【发布时间】:2014-12-17 17:00:00
【问题描述】:

我正在尝试基于项目库CitySDK 构建一个Web 应用程序,但我不知道如何将其正确导入到我自己的项目中。

我创建了一个 Maven Web 应用程序并将 CitySDK 库添加为依赖项,然后选择项目,右键单击并选择 Build with Dependencies。没有出现错误,在下图中您可以看到它作为依赖项出现。

但是,每当我尝试在我自己的 Web 应用程序(称为 TourismApplication 的 TestClass.java)中使用某些特定于它的类时,编译器都会显示一个错误,即包未知。有人可以就我错过的内容提出建议吗?我遵循了一些 Maven 教程,但没有任何效果。

依赖如下:

【问题讨论】:

  • 我认为您错过了工作流程中的几个步骤...您使用 Maven 使一切正常,但是您正在做其他导致编译器错误的事情?你到底在用这些文件做什么?
  • 我没有任何编译器错误;我想在我的项目中使用导入的库,但它不能识别它的对象。当我尝试使用导入库中的对象时出现编译器错误。
  • 愚蠢的问题,您是否添加了适当的import 语句?
  • 导入语句出错;我一写 import citysdk.*;我收到一个错误;另外,我通常应该得到一个自动完成功能,我没有
  • 扩展CitySDK的依赖时你看到了什么?

标签: java maven import dependency-management


【解决方案1】:

好的,我做了一些挖掘,我想我发现了你的问题。根据项目结构,他们的 POM 文件不正确。

首先,我将解释一下我认为您在项目中构建它所采取的步骤,以确保我遵循相同的步骤来使其工作。这些是我采取的步骤:

  1. 从您放置在 OP 中的链接克隆/下载源代码
  2. 通过运行他们说要使用的命令将项目构建到一个 jar 文件中:mvn clean package assembly:single
  3. 使用 mvn install 在本地 Maven 存储库中安装了工件
  4. 在您的项目 POM 中添加了一个依赖项

我尝试了与您所做的相同的事情,在测试源文件中使用该库,但无济于事。我查看了使用他们的说明构建的 .jar 文件,但没有找到任何存档到其中的 .class 文件……它基本上是空的。

事实证明,他们的src 文件夹结构遵循 Maven 标准,但他们的 POM 文件表明源位于不同的目录链中。如果您仔细检查构建日志,您会看到“[INFO] 没有要编译的源代码”

他们提供的 POM.xml 文件将源目录指定为

<sourceDirectory>src/citysdk/tourism/client</sourceDirectory>

但是,实际文件位于

src\main\java\citysdk\tourism\client

将 POM 文件中的行从上面更改为(与测试类似):

<sourceDirectory>src/main/java/citysdk/tourism/client</sourceDirectory>
<testSourceDirectory>src/test/java/citysdk/tourism/client/tests</testSourceDirectory>

重新构建并安装,当我尝试在我的项目中使用它时它工作。希望这会有所帮助。

仅供参考,我使用 IntelliJ 作为我的 IDE,但它应该与 Eclipse 相同。

【讨论】:

  • 你太棒了!!!我更换了 Netbeans 中的线路,清理并构建,它工作了!!!非常非常非常感谢!
  • 很高兴为您提供帮助!祝你好运
猜你喜欢
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
  • 2012-12-10
  • 2018-03-15
  • 1970-01-01
  • 2017-11-28
  • 2011-01-18
  • 2011-08-31
相关资源
最近更新 更多