【问题标题】:NoClassDefFoundError but class existsNoClassDefFoundError 但类存在
【发布时间】:2011-09-07 14:32:11
【问题描述】:

这里是错误:


Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: sfclocator/UpdateNameForm
    at sfclocator.SFCViewer.(SFCViewer.java:68)
    at sfclocator.SFCViewer$10.run(SFCViewer.java:1823)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: sfclocator.UpdateNameForm
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

我将此程序创建为 Netbeans 7.0 项目。我已经工作了大约2-3天,昨天完成了。它昨天工作得很好。今天早上我去睡觉,醒来,运行它,突然间我得到了错误。我修复了弹出的错误,除了这个。

项目构建完美,JAR 甚至运行良好,但是当我尝试使用 Netbeans 运行项目时,它给了我这个错误。任何帮助,将不胜感激。


我刚刚发现的更多信息:

在构建时,UpdateNameForm 类存在于 netbeans 项目的 classes 文件夹中,但是当我单击运行时,它删除 UpdateNameForm 类。

【问题讨论】:

  • 如果你在 NetBeans 中搜索 UpdateNameForm 类,你能看到它吗?
  • @The Elite 是的,我可以。它在项目中,在 netbeans 项目本身的 classes 文件夹中。请检查上面的更新
  • 你有清理你的构建的构建脚本吗?
  • @The Elite 就像我说的,它是一个 netbeans 项目。 netbeans 中的清理和构建按钮会自动执行此操作。它还将程序最终的 JAR 文件重新构建到“dist”文件夹中,并且这个 JAR 可以工作。
  • 我在 NB7 的一个项目中遇到了同样的事情……几天前工作得很好。在我的情况下,它是一个 Web 应用程序,在从 Spring 应用程序上下文加载 bean 时失败。

标签: java noclassdeffounderror netbeans-7


【解决方案1】:

我遇到了类似的问题,我通过首先从构建路径中删除 jar 然后再次添加它来解决它。重新添加 jar 后构建项目。有时构建路径没有刷新......我希望这也适用于你。

【讨论】:

  • 我不明白你的意思。我的构建路径中没有 JAR。构建我的项目所需的唯一 JAR 是 AbsoluteLayout.JAR
【解决方案2】:

我突然遇到了同样的问题。我在 /build/classes 中检查了构建过程的输出,但找不到丢失的类。难怪错误消息...我在 NetBeans 8.2 中解决此问题的方法是右键单击项目以打开“属性”页面。然后转到 Build 下的 Compiling 并取消选中 Compile on Save 框。之后,我对有问题的类进行了一些虚拟编辑 - 输入 System.out... 并再次删除它 - 并保存。之后,我可以右键单击该类并选择编译文件。再次检查 /build/classes 我可以看到现在已经构建了这些类。运行程序有效,我可以重新检查项目属性中的“保存时编译”框。

【讨论】:

  • 这个答案有助于解决我的 NetBeans 10 问题。只需添加一个 system.out 并保存文件,然后将其删除。我不需要执行任何其他步骤。
【解决方案3】:

我通过从现有资源创建一个新的 netbeans 项目解决了我的问题。在我看来,这不是做事的好方法(尤其是在大型项目中),但现有的答案都没有提供解决方案。

【讨论】:

    【解决方案4】:

    这类问题几乎都是由类路径问题引起的。

    • 检查您的类路径设置
    • 检查是否可以在执行环境中找到包含您的类的 jar
    • 检查该类是否不在您的类路径中较早找到的另一个 jar 中 - 尤其是该 jar 的较早/较新版本(即,如果您已升级但未清除旧 jar)

    【讨论】:

    • 我不知道如何检查我的类路径。我所有的类都存储在 netbeans 项目的 build 文件夹中,它们都在那里。构建所需的唯一 JAR 是 AbsoluteLayout.JAR
    • 这是实际解决此错误的唯一答案
    • 回复一个指向以 8,995 美元销售软件的网站的链接,我认为这没什么帮助。
    • @Shanemeister 这不是要出售的软件,而是要出售的域名,因为该站点已关闭并且他们让域名所有权到期。我删除了链接。
    猜你喜欢
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 2014-03-12
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多