2011-09-01 24 views
0

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

这是可能的,或者我将不得不更改代码吗?

+0

“总是生成类未找到异常”您是否获取ClassNotFoundException或ClassNotFoundError? –

+0

你在开玩笑 - 你希望JVM忽略错误/异常?您是否在某种调试模式下在IDE内部启动应用程序? – home

+0

对不起,我应该可能已经做了编辑,是例外,现在是错误 – user825962

回答

0

没有办法忽略ClassNotFoundExceptions,除非该代码实际上不需要该类。有些框架通过尝试加载类来发现某些功能是否可用,从而达到这一目的。但是,如果CNFE阻止您的应用程序运行,您只需修复它。如果您显示一些堆栈痕迹,则可能有人能够引导您朝着正确的方向前进。

0

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

如果你反而得到ClassNotFoundError s那么它不是一个反射的本地化问题,但没有初始化所需的代码。您应该尝试修剪不需要的依赖项,但实际上不应该使用未正确初始化的类。

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

+0

谢谢,这很有道理。未经修改的字节码出现在jar中,我可能缺少类加载器文件。我会尽力写我自己的。 (或找到原文) – user825962

+0

什么情况会导致一个专门的类加载器?将智能的想法(我的IDE)能够为我制作文件(看起来好像是为了执行代码而做的) – user825962

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