【问题标题】:How to get the line number of an error when calling Kotlin from Java?从 Java 调用 Kotlin 时如何获取错误的行号?
【发布时间】:2020-05-12 09:08:23
【问题描述】:

我正在尝试从 java 调用 kotlin 脚本时获取哪一行生成错误。

下面的代码给出了行号-1。

try
{
    String scriptcode = "\n\nthrow Exception()";
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByExtension("kts");
    engine.eval(scriptcode);
}
catch(ScriptException se)
{
    System.out.println(se.getLineNumber());
}

我错过了什么吗?

【问题讨论】:

  • 大概行号是unavailable,因为您是从字符串而不是文件运行脚本。
  • 我收回了,我用js而不是kts尝试了类似的东西,得到了预期的行号。显然这是 Kotlin 的限制。

标签: java kotlin javax.script


【解决方案1】:

可以试试这样的。 se.getStackTrace()[0].getLineNumber();

【讨论】:

  • 这给出了第 101 行。可能来自 org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineBase.asJsr223EvalResult(KotlinJsr223JvmScriptEngineBase.kt:101) 我从 se.printStackTrace();
  • 是的,我也这么认为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2022-01-17
  • 2021-09-14
  • 2017-10-04
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
相关资源
最近更新 更多