执行字节码(java)时忽略异常?

时间:2011-09-01 17:38:00

标签: java noclassdeffounderror

我有一个大型程序,我在java中修改过。我使用了intelliJ idea(社区版)IDE进行编译。当我去运行程序时,它会启动GUI,然后继续执行我想要的操作,几乎没有问题(其中与例外无关)。但代码总是生成类未找到的异常(即使原始的未修改代码在从.jar文件中提取它时也会这样做。尽管存在这些错误,但它在IDE中完美执行,同时仍然注意到错误,但它们不会出现但是,当我从虚拟机中执行它们(使用java文件名)时,通常被忽略的异常会阻止程序的最终执行。错误与iDE的错误完全相同显示,但IDE忽略它们!我怎么能让虚拟机忽略错误并执行程序(是否有传递给java的选项 - 例如java -ignoreerrors文件名)。

这可能,还是我必须改变代码?

3 个答案:

答案 0 :(得分:0)

除非代码实际上不需要该类,否则无法忽略ClassNotFoundExceptions。一些框架通过尝试加载类来发现某些功能是否可用来实现。但是,如果CNFE阻止您的应用运行,您只需要修复它。如果你显示一些堆栈痕迹,有人可能会引导你朝正确的方向发展。

答案 1 :(得分:0)

如果您在使用ClassNotFoundException时遇到问题,那么您可以随时本地化问题并使用try { ... } catch (...) { ... }捕获并记录。

如果您正在获取ClassNotFoundError s,那么它不是可反映的本地化问题,而是无法初始化所需的代码。您应该尝试修剪不需要的依赖项,但实际上不应该使用未正确初始化的类。

如果你必须这样做,你总是可以使用custom ClassLoader加载你的程序,该{{3}}为任何使用系统类加载器无法解析的名称生成伪空类,并使用它来加载你的主类。这将在某种程度上复制您的IDE正在做什么,尽管您的IDE可能会采取额外的步骤来确保部分定义良好的类具有正确的接口,即使某些方法由于其主体无法编译而被删除。

答案 2 :(得分:0)

  1. 您只能忽略编译器警告。你不能忽视错误。
  2. IntelliJ显示的错误来自同一个编译器。
  3. ClassNotFoundException表示您的代码无法在运行时动态加载类。
  4. 这可能意味着类路径中缺少必需的依赖项(jar)。尝试查阅代码文档,确保已解决所有运行时依赖项。还要确保从属jar在类路径中,否则运行时将无法找到它们。