“javac -d classes *.java; scalac -classpath […] -d classes *.scala”
“javac -d classes *.java; scalac -classpath […] -d classes *.scala”
and run.sh of the form “scala -classpath […] -D=8090 Main”
.java -version
JAVA_HOME
system variable on the folder with the JDK, and set the bin
in the PATH.bin
in PATH
. Checking: scala –version
bin
in PATH
. Checking: gradle –v
// Scala apply plugin: 'scala' ext.scala_version = '2.9.1' ext.jersey_version = '1.12' ext.description = 'Accessing various calculation tasks' // — - // «compileJava» «compileScala», task go(dependsOn: ['compileJava', 'compileScala'], type: JavaExec) { main = 'Main' classpath = sourceSets.main.runtimeClasspath standardInput = System.in systemProperty 'package', 'web' systemProperty 'port', '8090' } // sourceSets { // main { java { // «sources» srcDir 'sources' } scala { // Scala «sources» srcDir 'sources' } } } // «classes» sourceSets.main.output.classesDir = 'classes' // dependencies { // Scala Gradle scalaTools group: 'org.scala-lang', name: 'scala-compiler', version: scala_version scalaTools group: 'org.scala-lang', name: 'scala-library', version: scala_version // , compile group: 'org.scalatra', name: 'scalatra_2.9.1', version: '2.1.0.M1' runtime group: 'org.scalatra', name: 'scalatra_2.9.1', version: '2.1.0.M1' compile group: 'org.mortbay.jetty', name: 'jetty', version: '7.0.0.pre5' runtime group: 'org.mortbay.jetty', name: 'jetty', version: '7.0.0.pre5' compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1' // jar- «libraries», // compile fileTree(dir: 'libraries', include: '*.jar') runtime fileTree(dir: 'libraries', include: '*.jar') } // repositories { mavenCentral() }
package web import hash.Whirlpool import hash.SHA class Hasher extends tools.WebService { def path = "/ŃŁ" get("/") { " : Whirlpool, SHA" } get("/Whirlpool/:what") { val = params("what") json("" -> , "ŃŁ" -> Whirlpool.hash()) } get("/SHA/:what") { val = params("what") json("" -> , "ŃŁ" -> SHA.hash()) } }
import org.mortbay.jetty.Server import org.mortbay.jetty.servlet.{Context, ServletHolder} import tools._ object Main extends App { // Jetty val server = new Server(System.getProperty("port").toInt) val root = new Context(server, "/", Context.SESSIONS) // Rest - val package_name : String = System.getProperty("package") // ScalatraServlet ( ) "" . // "path" . for (handler <- PackageScanner.getClasses(package_name) if classOf[org.scalatra.ScalatraServlet].isAssignableFrom(handler)) { // val servlet = handler.newInstance().asInstanceOf[javax.servlet.Servlet] // "" try { // path() val path = handler.getMethod("path").invoke(servlet).toString // "" Jetty root.addServlet(new ServletHolder(servlet), path + "/*") println(handler.getPackage().getName() + "." + handler.getName() + " is mapped to " + path) } catch { // path() case error: NoSuchMethodException => throw new RuntimeException("Method path() not found in class " + handler.getPackage().getName() + "." + handler.getName()) } } // Jetty server.start() server.join() }
gradle go
command. If successful, you will see the launch of the web server in the console:gradle go : compileJava : compileScala : processResources UP-TO-DATE : classes : go SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail > Building>: go
Source: https://habr.com/ru/post/143603/
All Articles