在Scala中定义main的常用方法(如下所示)可用于运行带有'scala'的类,但不能运行'java'(因为创建的方法不是静态的).如何编写可以用'java'执行的Scala类/对象?
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } }
Shaun.. 7
javap实际上会告诉你你的主要是静态的.
javap HelloWorld Compiled from "HelloWorld.scala" public final class HelloWorld extends java.lang.Object{ public static final void main(java.lang.String[]); public static final int $tag() throws java.rmi.RemoteException; }
也许你只需要你的类路径上的Scala罐子?
Stack Overflow上有一个类似的问题:" 从Scala文件创建一个jar文件 ".
我刚刚使用上面的说明(链接)验证了这一点.
只需通过:
java -jar HelloWorld.jar
Daniel C. So.. 7
你错了.你可以用"java"运行它,你给出的不可能的原因是不正确的.在这里,让我展示"scala"里面的内容.
Unix的:
#!/bin/sh ... exec "${JAVACMD:=java}" $JAVA_OPTS -cp "$TOOL_CLASSPATH" -Dscala.home="$SCALA_HOME" -Denv.classpath="$CLASSPATH" -Denv.emacs="$EMACS" scala.tools.nsc.MainGenericRunner "$@"
视窗:
@echo off ... if "%_JAVACMD%"=="" set _JAVACMD=java ... "%_JAVACMD%" %_JAVA_OPTS% %_PROPS% -cp "%_TOOL_CLASSPATH%" scala.tools.nsc.MainGenericRunner %_ARGS%
但是,如果您碰巧有一个定义了相同名称的类,那么可能会影响您的错误,具体取决于您使用的Scala版本.
javap实际上会告诉你你的主要是静态的.
javap HelloWorld Compiled from "HelloWorld.scala" public final class HelloWorld extends java.lang.Object{ public static final void main(java.lang.String[]); public static final int $tag() throws java.rmi.RemoteException; }
也许你只需要你的类路径上的Scala罐子?
Stack Overflow上有一个类似的问题:" 从Scala文件创建一个jar文件 ".
我刚刚使用上面的说明(链接)验证了这一点.
只需通过:
java -jar HelloWorld.jar
你错了.你可以用"java"运行它,你给出的不可能的原因是不正确的.在这里,让我展示"scala"里面的内容.
Unix的:
#!/bin/sh ... exec "${JAVACMD:=java}" $JAVA_OPTS -cp "$TOOL_CLASSPATH" -Dscala.home="$SCALA_HOME" -Denv.classpath="$CLASSPATH" -Denv.emacs="$EMACS" scala.tools.nsc.MainGenericRunner "$@"
视窗:
@echo off ... if "%_JAVACMD%"=="" set _JAVACMD=java ... "%_JAVACMD%" %_JAVA_OPTS% %_PROPS% -cp "%_TOOL_CLASSPATH%" scala.tools.nsc.MainGenericRunner %_ARGS%
但是,如果您碰巧有一个定义了相同名称的类,那么可能会影响您的错误,具体取决于您使用的Scala版本.