Солярис имеет команда pstack, которая была также скопирована в Linux.
Вы ошиблись. Вы можете запустить его с помощью «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 "$@"
Windows:
@echo off
...
if "%_JAVACMD%"=="" set _JAVACMD=java
...
"%_JAVACMD%" %_JAVA_OPTS% %_PROPS% -cp "%_TOOL_CLASSPATH%" scala.tools.nsc.MainGenericRunner %_ARGS%
Однако , если у вас есть определенный класс с таким же именем, то есть ошибка, которая может быть влияет на вас, в зависимости от используемой вами версии Scala.
javap фактически покажет вам, что ваш main статичен.
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;
}
Возможно, вам просто нужны jar-файлы Scala в вашем пути к классам?
Здесь есть аналогичный вопрос по Stack Overflow: " Создание jar-файла из файла Scala ".
Я только что проверил, что это работает с инструкциями (ссылка) выше.
Просто запустите через:
java -jar HelloWorld.jar
Вы также случайно определили класс HelloWorld
? В Scala 2.7.x есть ошибка, которая не позволяет создавать статические методы класса HelloWorld
, когда определены оба объекта HelloWorld
и класс HelloWorld
.
Самый простой способ, который я всегда использую, - это определить объект (как это сделали вы), но не , соответствующий «сопутствующий» класс. В этом случае компилятор Scala создаст пару классов, тот, чье имя в точности совпадает с именем объекта, будет содержать статические методы пересылки, которые для точек входа в программу запуска являются именно тем, что вам нужно. Другой класс имеет имя вашего объекта с добавленным $, и это место, где находится код. Javap раскроет эти вещи, если вам интересны подробности.
Таким образом, ваш пример HelloWorld
будет работать так, как вы хотите, позволяя следующее:
% scala pkg.package.more.HelloWorld args that вы проигнорируете
Рэндалла Шульца