【问题标题】:Java Beginner Packages in IntelliJIntelliJ 中的 Java 初学者包
【发布时间】:2015-09-17 23:02:23
【问题描述】:

我目前正在尝试编辑一个更大的 java 项目。在阅读了有关如何开始的建议后,我决定先尝试构建项目,以尝试一些代码,看看是否可以了解项目的层次结构。

不幸的是,我什至无法解决一些基本问题,例如缺少包导入,而且我不确定修复它们的最佳方法是什么。我目前在 IntelliJ 上设置我的项目以从我的 git 存储库中提取,并且一些包丢失并显示如下错误:

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse; 
import org.apache.http.HttpEntity;

然而,对于这些导入语句中的每一个,http 都带有红色下划线。我猜这是缺少的依赖项?解决此问题的最佳方法是什么?

build.sbt 文件:

import AssemblyKeys._

assemblySettings

organization := ""

name := "service"

version := "1.0"

scalaVersion := "2.10.2"

mainClass in assembly := Some("")

jarName in assembly :=  { s"${name.value}-${version.value}.jar" }

val deployDevTask = TaskKey[Unit]("deploy-dev", "Copies assembly jar to a dev remote location")

val devNode = ""

deployDevTask <<= assembly map { (asm) =>
  val local = asm.getPath
  val remote = devNode + ":" + "/tmp/" + asm.getName
  println(s"Copying: $local -> $remote")
  Seq("scp", local, remote) !!
}

【问题讨论】:

  • 您的 Git 存储库是否包含任何 jar 文件,或者它是否使用构建系统?如果它使用 maven/gradle 作为构建系统,你会看到一个名为“pom.xml”或“build.gradle”的文件——对你来说是这样吗?
  • 这是一个 Scala 项目吗? build.sbt 用于控制 scala 构建工具,该工具会下载依赖项,然后使用它们和您的源代码来构建您的项目。您可能需要安装 IntelliJ/IDEA 插件才能使用该构建文件进行构建。
  • 如果您在帖子中至少发布了 build.sbt 的依赖项部分作为编辑,这可能会有所帮助。
  • 好的,据我所知,Jar 中似乎没有依赖项。这意味着您可能需要手动获取 jars 并添加它们(尽管我没有使用 SBT 或 Scala 的经验,所以我不愿意发布最终答案)
  • 感谢您的帮助!

标签: java scala intellij-idea dependencies packages


【解决方案1】:

撰写本文时的正确答案是添加 bjfletcher 声明的行,但使用 single % 而不是 double:

libraryDependencies += "org.apache.httpcomponents" % "httpclient" % "4.5"

来自 sbt 文档 http://www.scala-sbt.org/1.0/docs/Library-Dependencies.html,当使用双百分比 (%%) 时,sbt 会将您项目的 Scala 版本添加到工件名称中。通常这不是您想要的,因为从稍微不同的 Scala 版本构建将是兼容的,并且可能没有可用的精确版本匹配。

使用单一百分比意味着即使与您的 Scala 版本不完全匹配,您也会获得一个版本。

【讨论】:

    【解决方案2】:

    将以下内容添加到您的build.sbt

    libraryDependencies += "org.apache.httpcomponents" %% "httpclient" % "4.5"
    

    然后将图标悬停在 IntelliJ IDEA 左下角,该图标应显示不同视图的列表 - 选择 SBT。 (如果您没有看到 SBT,请进入首选项并将其添加为插件。)

    SBT 视图中,单击“刷新”图标(它是第一个图标)。观看它下载依赖项。如果无法下载依赖,它会弹出一条消息。

    最后红色下划线应该消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-12
      • 2013-03-29
      • 2012-03-05
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多