【问题标题】:Unable to instantiate java class of an External jar无法实例化外部 jar 的 java 类
【发布时间】:2015-03-16 10:08:12
【问题描述】:

我无法将Tidy 实例化为

Tidy t= new Tidy(); 

在我的 java 代码中。

这个jar在我的类路径下,没有编译错误。

我的代码在到达这一行后退出到 finally 块而没有进入 catch 块,跳过该行之后的任何代码。

【问题讨论】:

  • 您遇到什么错误或异常?有堆栈跟踪吗?
  • 如果没有捕获到异常,可能是 Throwable:stackoverflow.com/questions/2129647/…
  • 就像我提到的,它跳转到finally块......没有例外
  • 你能显示有问题的代码块吗?那么这个问题会更容易回答(例如,问题行后面的try 块中有什么,Tidy 是什么 - 你自己的类,来自框架的类等?)
  • 这可能意味着您在 catch 块中捕获了错误的东西。抓住 Throwable(暂时)以确保。

标签: java eclipse


【解决方案1】:

引用来自 StackOverflow question/answer 的“Ray Hidayat”。

Throwable 是异常和错误的超类,所以你会捕获 Throwable 如果您不仅想捕获异常,还想捕获错误, 这就是拥有它的意义所在。问题是,错误通常是 普通应用程序不会也不应该捕获的东西,所以 除非你有特定的理由使用 Throwable,否则只使用 Exception。

我猜你的情况可能会引发错误。尝试捕捉 Throwable 只是为了检查,但正如引用中提到的,你不应该真的捕捉 Throwable。

【讨论】:

  • 这是一个 Throwable。事实证明,我的构建时类路径和运行时类路径之间存在不匹配,在将 jTidy jar 添加到我的运行时类路径后它可以工作。
【解决方案2】:

我建议你在 finally 块之前为 Throwable 添加一个 catch,然后再试一次,看看你的代码是否会抛出另一个异常。

try {
    } catch (Throwable e) {
        e.printStackTrace();
    } finally { ... }
}

【讨论】:

    猜你喜欢
    • 2012-02-23
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多