我开始在Scala与SBT一起制作一个Hello World计划。
这是我的项目布局:
我确保下载最新的JDK和Scala,并配置我的项目设置。这是我的build.sbt
:
name := "Coursera_Scala"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
Hello.scala
本身编译好了:
package demo
class Hello {
def sayHelloTo(name: String) = "Hello, $name!"
}
但是,我的陪同HelloTest.scala
没有。这是测试:
package demo
import org.scalatest.FunSuite
class HelloTest extends FunSuite {
test("testSayHello") {
val result = new Hello.sayHelloTo("Scala")
assert(result == "Hello, Scala!")
}
}
这是错误:
Error:(8, 22) not found: value Hello
val result = new Hello.sayHello("Scala")
^
除编译错误外,Intellij还为符号Hello
,assert
和==
显示错误“无法解析符号”。这让我相信构建设置不正确,但导入时不会出错吗?
答案 0 :(得分:2)
问题在于这个表达式:
new Hello.sayHelloTo("Scala")
这将创建在值sayHelloTo
上定义的类Hello
的新实例。但是,没有值Hello
,只有班级Hello
。
你想写这个:
(new Hello).sayHelloTo("Scala")
这将创建类Hello
的新实例,并在实例上调用sayHelloTo
。
答案 1 :(得分:1)
或者您可以使用DataSource jBossDataSource = null;
try {
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jboss.naming.remote.client.InitialContextFactory");
props.put(Context.PROVIDER_URL, "remote://localhost:4447");
props.put(Context.SECURITY_PRINCIPAL, "admin");
props.put(Context.SECURITY_CREDENTIALS, "password");
Context ctxt = new javax.naming.InitialContext(props);
log.debug("Context Initialized");
Object lookup = ctxt.lookup("java:/SpecOpsDB");
jBossDataSource = (javax.sql.DataSource) lookup;
log.info("Got JBoss DataSource");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
。 Writing()应创建一个新实例,然后调用该方法。