【问题标题】:Application crashes whenever instantiating (empty) constructor每当实例化(空)构造函数时应用程序崩溃
【发布时间】:2019-09-21 03:58:50
【问题描述】:

我正在创建一个 Android 扩展,旨在连接到基于众所周知的 JSch 库的远程 SSH 主机,这样一旦按下按钮,类就会以这种方式实例化, 没有编译错误:

JSch jsch = new JSch();

...但是,应用程序崩溃了!

查看JSch()构造函数,里面什么都没有:

public JSch(){
// here there are several commented instructions that need to be
// used just at MAC operational systems (not my OS).
}

如果我删除初始化,编译器会抱怨变量 jsch 未初始化。

JSch jsch;

使用 Apache Ant 进行编译后,没有可用于跟踪运行时错误的调试资源。

所有测试都在线程或回调方法中进行,结果相同;我根本无法启动 jsch 变量,这会产生运行时异常 com.jcraft.jsch.JSch。 有人对如何解决该问题有一些见解吗?

【问题讨论】:

  • 你能分享错误堆栈跟踪吗?
  • JSch中有静态初始化代码吗?
  • 使用 Logcat 检查 Java 堆栈跟踪:stackoverflow.com/questions/23353173/…
  • 没有办法做到这一点,应用程序在未连接任何东西的手机上运行,​​我的意思是,.apk 包正在通过 MIT APP INVENTOR 配套工具通过 Wi-fi 连接下载所以如上所述,到目前为止还没有可用的调试资源。
  • @CommonsWare 1,感谢您的回复,但我使用的是过时的工具集,Apache Ant,它刚刚构建,我无法在调试模式下访问 Mobile。

标签: java android ant extension-methods runtimeexception


【解决方案1】:

我能够安装 Android SDK-tools 并通过行命令 ADB logcat > file.txt 捕获日志后,出现多次出现以下句子:

java.lang.NoClassDefFoundError: com.jcraft.jsch.JSch

这意味着使用apache命令ant extensions编译的扩展文件(.aix)没有在其中嵌入上述类。 这完全解释了问题(应用程序在构造函数上方实例化时崩溃 - 不存在),下一步是发现如何封装依赖项 - 如果我自己无法做到,肯定在另一个线程中。

【讨论】:

  • 总之很奇怪,一旦'ant'没有任何时候发出编译错误。
猜你喜欢
  • 2017-02-18
  • 2019-01-01
  • 2016-01-09
  • 2023-04-05
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
相关资源
最近更新 更多