为什么我得到Class not found例外

我正在使用DeferredTextImpl类,eclipse似乎没有抱怨它,但是当我运行我的项目时,我得到运行时exception.... Class not found exception for DeferredTextImpl ..

当我搜索类文件时,我在rt.jar中找到它,它肯定应该在类路径上。 我还检查了项目properties->Java build path并且可以在最底部看到JRE系统库。 当我扩展它。 我可以看到rt.jar 。 这意味着它在课堂上,对吧?

为什么我收到此错误?

检查运行时的Xerces jar版本与编译时类的版本。 确保在运行时有一个Xerces2 jar。 我怀疑rt.jar中的类与您的应用程序正在寻找的类相同。

运行代码时,Eclipse中的构建路径 路径之间存在差异。 构建路径用于编译代码。 类路径是应用程序运行时的。

构建路径使用Project – > Properties – > Java Build Path进行配置

使用“运行” – >“运行配置” – >“类路径”配置类路径

在您的情况下,如果“ 运行配置”下的 JRE”选项卡指向与构建路径中相同的JRE,则还应检查(如其他人提到的那样)。

此类是特定DOM实现(Apache Xerces)的一部分。 它不是公共Java API的一部分,如果你确实在一个JVM的运行时类库中找到它,这并不能保证它会存在于其他JVM的运行时类库中。 如果需要显式使用Xerces,则需要在运行时类路径上显式包含Xerces库。

您是否可以在运行代码时通过使用-jar选项显式添加rt.jar来尝试运行代码? 如果这样可行则意味着eclipse中的rt.jar不在类路径上。

右键单击项目> java构建路径>库删除JRE并添加指向JDK文件夹的库,在我的例子中是C:\ Program Files \ Java \ jdk1.7.0_55。 但在此之前,使用java安装JRE也是如此。 Windows> java>安装了JRE。 希望这会有所帮助