У меня есть класс, который содержит метод main, и я хочу запустить новый процесс, который запускает этот класс.
Но когда я пытаюсь использовать Scala, чтобы получить имя этого класса, это дает мне неправильное имя. Например:
object Test {
def main(args: Array[String]) = {
println(Test.getClass.getCanonicalName)
}
}
Тогда:
roei@roei-main:~/Java$ scalac Test.scala
roei@roei-main:~/Java$ scala Test
Test$
roei@roei-main:~/Java$ javap Test*.class
Compiled from "Test.scala"
public final class Test {
public static void main(java.lang.String[]);
}
Compiled from "Test.scala"
public final class Test$ {
public static final Test$ MODULE$;
public static {};
public void main(java.lang.String[]);
}
Test.getClass.getCanonicalName
дает мне Test$
, не Test
. Но метод static main находится внутри класса с именем Test
, тогда как Test$
содержит нестатический main. Очевидно, я могу сделать обходной путь, просто удалив $
в конце, но я ищу более удовлетворительное / надежное решение.