“ Scala中的WeKanban2示例项目的对象github不是com软件包的成员”

问题描述 投票:1回答:2

我是Scala的新手,所以从阅读2013年的《 Scala in Action》一书开始。但是我无法构建简单的sbt WeKanban2项目。在示例中,我将使用较新版本的scala和sbt。运行sbt时出现错误:

error: object github is not a member of package com import com.github.siasia.WebPlugin._

我的build.properties:

//was sbt.version=0.12.0
sbt.version=0.13.7

plugins.sbt

// was libraryDependencies <+= sbtVersion(v => "com.github.siasia" %% "xsbt-eb-plugin"  (v+"-0.2.11.1")) 
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "0.7.0")

build.sbt

import com.github.siasia.WebPlugin._

name := "weKanban"

organization := "scalainaction"

version := "0.2"

//was: scalaVersion := "2.10.0"
scalaVersion := "2.11.4"

scalacOptions ++= Seq("-unchecked", "-deprecation")

resolvers ++= Seq(
"Scala-Tools Maven2 Releases Repository" at "http://scala-tools.org/repo-releases",
"Scala-Tools Maven2 Snapshots Repository" at "http://scala-tools.org/repo-snapshots"
)

libraryDependencies ++= Seq(
  "org.scalaz" %% "scalaz-core" % scalazVersion,
  "org.scalaz" %% "scalaz-http" % scalazVersion,
  "org.eclipse.jetty" % "jetty-servlet" % jettyVersion % "container",
  "org.eclipse.jetty" % "jetty-webapp" % jettyVersion % "test, container",
  "org.eclipse.jetty" % "jetty-server" % jettyVersion % "container",
  "com.h2database" % "h2" % "1.2.137",
  "org.squeryl" % "squeryl_2.10" % "0.9.5-6"
)

seq(webSettings :_*)

build.scala

import sbt._
import Keys._

object H2TaskManager {
  var process: Option[Process] = None
  lazy val H2 = config("h2") extend(Compile)

  val startH2 = TaskKey[Unit]("start", "Starts H2 database")
  val startH2Task = startH2 in H2 <<= (fullClasspath in Compile) map { cp =>
      startDatabase(cp.map(_.data).map(_.getAbsolutePath()).filter(_.contains("h2database")))}         

      def startDatabase(paths: Seq[String]) = {
        process match {
          case None =>
            val cp = paths.mkString(System.getProperty("path.seperator"))
            val command = "java -cp " + cp + " org.h2.tools.Server"
            println("Starting Database with command: " + command)
            process = Some(Process(command).run())
            println("Database started ! ")
          case Some(_) =>
            println("H2 Database already started")
        }
      }     

  val stopH2 = TaskKey[Unit]("stop", "Stops H2 database")
  val stopH2Task = stopH2 in H2 :={
    process match {
      case None => println("Database already stopped")
      case Some(_) =>
        println("Stopping database...")
        process.foreach{_.destroy()}
        process = None
        println("Database stopped...")
    }
  }  
}

object MainBuild extends Build {
 import H2TaskManager._
 lazy val scalazVersion = "6.0.3"
 lazy val jettyVersion = "7.3.0.v20110203"

 lazy val wekanban = Project(
   "wekanban",
   file(".")) settings(startH2Task, stopH2Task)}

我该如何解决此错误?如何在调试模式下从Idea 14启动应用程序?

scala intellij-idea sbt
2个回答
0
投票

您的导入

import com.github.siasia.WebPlugin._

未能找到路径github及以下。在您的plugins.sbt中,您写道:

// was libraryDependencies <+= sbtVersion(v => "com.github.siasia" %% "xsbt-eb-plugin"  (v+"-0.2.11.1")) 
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "0.7.0")

github路径可能存在于过时的com.github.siasia.xsbt-eb-plugin中。但是com.earldouglas.xsbt-web-plugin只有路径com.earldouglas.xwp。您应该检查那里的任何类(https://github.com/earldouglas/xsbt-web-plugin/tree/master/src/main/scala)是否类似于您需要导入的类。


0
投票

可能与该软件包不完全相关,但相似。该库在sbt中存在,并且一切正常。但是我仍然无法构建项目,所以我去了$HOME/.ivy2/cache找到依赖项目录并删除了它,然后返回$PROJECT_HOME/并执行了sbt build

© www.soinside.com 2019 - 2024. All rights reserved.