IntelliJ中的Java初学者包

时间:2015-06-30 23:38:10

标签: java scala intellij-idea dependencies packages

我目前正在尝试编辑更大的java项目。在阅读了如何入门的建议之后,我决定首先尝试构建项目以使用一些代码,看看我是否能够理解项目的层次结构。

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

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) !!
}

2 个答案:

答案 0 :(得分:1)

将以下内容添加到 $query ='SELECT * FROM [master].[dbo].[TestTbl] WHERE Agentd_ID = "$_SESSION['agentid']" ';

build.sbt

然后将图标隐藏在IntelliJ IDEA的左下角,该图标将显示不同视图的列表 - 选择libraryDependencies += "org.apache.httpcomponents" %% "httpclient" % "4.5" 。 (如果您没有看到SBT,请进入首选项并将其添加为插件。)

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

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

答案 1 :(得分:0)

撰写本文时的正确答案是添加bjfletcher所述的行,但使用%而非双倍:

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

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

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