java - rJava:如何获取堆栈跟踪/更详细的错误?

标签 java r rjava

有没有办法让 rJava 打印出错误的完整堆栈跟踪,而不仅仅是异常?例如,此代码(尝试从 R 调用 Ambit2 化学信息学库)

smrkMan <- .jnew("ambit2.smarts.SMIRKSManager", dcob)
reaction <- .jcall(smrkMan, "Lambit2/smarts/SMIRKSReaction;", "parse", ">>C" )
res <-  .jcall(smrkMan, "Z", "applyTransformation", AC, 
             .jnull("ambit2/smarts/IAcceptable"),
             reaction)

只给我

Fehler in .jcall(smrkMan, "Z", "applyTransformation", AC,
.jnull("ambit2/smarts/IAcceptable"),  : 
java.lang.NullPointerException

这不是很有用,我想看看它在哪一行失败,这样我就可以返回并在源代码中跟踪它......

有没有可能?

最佳答案

您可以使用.jgetEx()来获取异常对象并打印堆栈跟踪:

> .jcall("C",,"main",check=FALSE)
> ex=.jgetEx()
> .jcheck()
Error: java.lang.Exception: foo
> ex$printStackTrace()
java.lang.Exception: foo
    at C.main(C.java:3)

public class C {
  static void main() throws Exception {
  throw new Exception("foo"); } }

只需确保在调用 printStackTrace() 之前调用 .jclear().jcheck(),因为 Java 不会这样做任何事情,直到您清除异常。

关于java - rJava:如何获取堆栈跟踪/更详细的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34132229/

相关文章:

java - 使用 rJava 加载数据

r - write.xlsx 函数在使用文件名定义路径时出错,但 read.xlsx 没问题

在 64 位 Ubuntu 16.04 上运行 RNetLogo 时出现 java.lang.NoClassDefFoundError 错误 - 但问题是 rJava 还是 NetLogo?

java - 在Spring元素中添加css和js

java - ForEach 循环迭代从外部类获取的 ArrayList

r - 在 R Shiny 中更新选择输入而不重置

RSelenium,Chrome,如何设置下载目录,文件下载错误

java - Hibernate 不执行 UPDATE 查询

java - Android 应用程序因单击按钮而崩溃

r - 在data.table中的多列上计算不同