我试图在scala中使用一个主对象,但SBT返回以下消息:
> package
[info] Packaging /Users/aironman/scala_cassandra_project_without_play/target/scala-2.10/my-project_2.10-0.1-SNAPSHOT.jar ...
[info] Done packaging.
[info] Packaging /Users/aironman/scala_cassandra_project_without_play/common/target/scala-2.11/common_2.11-0.1.jar ...
[info] Done packaging.
[info] Packaging /Users/aironman/scala_cassandra_project_without_play/main/target/scala-2.11/main_2.11-0.1.jar ...
[info] Done packaging.
[success] Total time: 0 s, completed 11-mar-2016 11:25:16
> run
[info] Running common.utils.cassandra.CassandraMain
[error] (run-main-1) java.lang.ClassNotFoundException: common.utils.cassandra.CassandraMain
java.lang.ClassNotFoundException: common.utils.cassandra.CassandraMain
at java.lang.ClassLoader.findClass(ClassLoader.java:530)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[trace] Stack trace suppressed: run last scala_cassandra_project_without_play/compile:run for the full output.
java.lang.RuntimeException: Nonzero exit code: 1
at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last scala_cassandra_project_without_play/compile:run for the full output.
[error] (scala_cassandra_project_without_play/compile:run) Nonzero exit code: 1
[error] Total time: 0 s, completed 11-mar-2016 11:25:18
>
正如您可以在我的build.sbt
文件中看到的那样,我想使用一个彼此体面的多依赖项设置。
name := "My Project"
val commonSettings = Seq(
organization := "net.example",
version := "0.1",
scalaVersion := "2.11.4",
scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")
)
lazy val testDependencies = Seq (
"org.scalatest" %% "scalatest" % "2.2.0" % "test"
)
lazy val cassandraDependencies = Seq (
"com.datastax.cassandra" % "cassandra-driver-core" % "2.1.2",
"com.chrisomeara" % "pillar_2.11" % "2.0.1"
)
lazy val common = project.in(file("common"))
.settings(commonSettings:_*)
.settings(libraryDependencies ++= (testDependencies ++ cassandraDependencies))
val projectMainClass = "common.utils.cassandra.CassandraMain"
lazy val main = project.in(file("main"))
.dependsOn(common)
.settings(commonSettings:_*)
.settings(
mainClass := Some(projectMainClass)
)
mainClass in (Compile, run) := Some(projectMainClass)
该项目的文件夹具有内部版本。根文件夹中的sbt文件,以及另外两个文件夹,common和
main,具有相同的结构,我的意思是,
aironman$:scala_cassandra_project_without_play ls common/src/main/scala/common/utils/cassandra/
CassandraConnectionUri.scala Pillar.scala
Helper.scala
aironman$:scala_cassandra_project_without_play ls main/src/main/scala/common/utils/cassandra/
CassandraMain.scala
卡桑德拉明。scala代码太简单,只有包和主函数:
package common.utils.cassandra
import common.utils.cassandra._
object CassandraMain extends App{
println("Trying to connect to Cassandra server...")
//val uri = CassandraConnectionUri("cassandra://localhost:9042/test")
//val session = Helper.createSessionAndInitKeyspace(uri)
//session.execute(/* Some CQL string */)
}
在@口渴行通知后更新1
我不理解为什么sbt试图寻找common_2.10,因为在commonSettings中scalaVersion设置为2.11.4,正如您所见,我的scala设置为:
MacBook-Pro-Retina-de-Alonso:~ aironman$ sbt sbtVersion
[info] Set current project to aironman (in build file:/Users/aironman/)
[info] 0.13.11
MacBook-Pro-Retina-de-Alonso:~ aironman$ scala -version
Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL
好的,现在我知道main的懒val必须有. set(通用设置:_*),如果没有,它会尝试使用版本2.10
更新2,现在我知道我必须更改为project main并执行run命令。谢谢你们,斯奎特·克罗和纳比尔。
MacBook-Pro-Retina-de-Alonso:scala_cassandra_project_without_play aironman$ sbt
[info] Set current project to My Project (in build file:/Users/aironman/scala_cassandra_project_without_play/)
> project main
[info] Set current project to main (in build file:/Users/aironman/scala_cassandra_project_without_play/)
> run
[info] Running common.utils.cassandra.CassandraMain
**Trying to connect to Cassandra server...**
[success] Total time: 1 s, completed 11-mar-2016 11:50:41
我学到了很多,再次感谢
似乎主体可能是文件名,但不是类名。更多信息,请张贴校长的内容。Scala类和文件名应该以后者开头
还要检查主类是否是对象。
CassandraMain在主项目中,您正在尝试在根项目中运行它。
为main项目设置main Class,并使用main/run
在那里运行它。
lazy val main = project.in(file("main"))
.dependsOn(common) // Should 'dependsOn' common if you wanna use common code in main
.settings(
mainClass := Some("common.utils.cassandra.CassandraMain")
)
我面临着以下问题。我有两个Gradle项目(ProjectA和ProjectB)在同一个层次结构上,没有任何根项目。由于ProjectA依赖于ProjectB,我尝试将其建模如下: ProjectA的settings.gradle: ProjectA的build.gradle: 然而,当我在ProjectA上执行gradle build时,我得到了以下错误: 我必须在ProjectB中定义某种默认
大家好,请指导如何在Xcode中解决:WebdriverAgent项目的问题。 在WebDriverAgent内部使用命令:./scripts/bootstrap.sh-d后,按照要求遵循所有先决条件 cd/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/open。复制WebdriverAgent文件夹cd
问题内容: 我有一个Eclipse插件项目,它取决于我在Eclipse工作区中拥有的其他项目。在“ Java Build Path”->“ Projects”选项卡下添加项目依赖项,并在“ Order and Export”中选择项目后,我得到了java.lang.NoClassDefFoundError。 我假设其他项目未正确包含在插件中。有谁知道如何解决这一问题? 谢谢,詹姆斯 问题答案: E
我有以下项目结构: 问题: 如何在项目2中执行类? 来自哪个项目? 如果我只想编译/打包 project2,我该怎么做?(如果我从项目2中执行,则找不到项目1)。我想在不安装项目1的情况下执行此操作。 当然,如果需要的话,项目的结构可以改变。 下面显示了pom.xml文件中的相关部分。父/砰.xml 父/项目1/pom.xml 父/项目2/pom.xml 父/项目3/pom.xml与项目2相似
我有一个Advision类,它使用了代理jar中的另一个类,但这个类依赖于代理jar中不存在的一个类。代理jar中不存在的这个类存在于应用程序类加载器上的另一个jar中。代理jar位于系统类加载器上。所以我没有遇到ClassDefounderRor。我已经尝试使用Transformer.forAdvise,这是在另一篇文章中建议的,但这只适用于Advise类。
我已经在NetBeans8.1中创建了5个不同的Java SE项目。我想创建一个新的项目,该项目带有一个介绍窗口,该窗口带有链接/打开链接到该按钮的项目的按钮,并从该窗口创建一个软件。 我已经在主项目->Properties->Library->Compile->Add Project中添加了依赖项(其他项目的jar文件)。 当我在netbeans中运行它们时,运行窗口打开了,但是当我从主项目中调