我刚刚检查了我的(工作)wicket项目到一台新的开发机器,突然间,每当我尝试启动jetty时,我都会收到此错误。
java.lang.NoClassDefFoundError: net/unbewaff/Start
Caused by: java.lang.ClassNotFoundException: net.unbewaff.Start
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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Exception in thread "main"
当我删除文件时,类文件就在那里,eclipse会重建它。未找到的类是包含我正在尝试运行并且应该启动嵌入式jetty的主要方法的类。甚至cd到目录,查看文件并在命令行上键入java Start.class
会产生相同的错误,但措辞略有不同。
Wicket and embedded jetty - classNotFoundException似乎是相关的,但不是因为后面和加载Start-class后发生的错误。
我做了什么:
老实说,我不认为这是一个检票口或码头问题,但由于它们都以某种方式参与其中,我希望有人能解决这个问题......
我检查过的事情:
javap Start.class
的字节码没有运气(ERROR:Could not find Start.class
)mvn jetty:run
(与webapp一起启动并运行jetty)有什么帮助:
正如Martijn建议的那样,我抓住了一个新的快速入门并比较了Start-classes。快速入门的那个工作得很好,我的差异工具和我能找到的唯一区别是连接器上的端口已更改,但快速入门的类接受了这些没有任何问题。然后我将该类从快速入门复制到我的项目,它在Dummy.java的名称下运行良好。删除违规类后,清理工作区并将其重命名为Start.java它停止工作。将其重命名为Dummy,使其恢复到工作状态。
所以我得到了一个有效的解决方法,但仍然不知道,出了什么问题。
答案 0 :(得分:1)
您在Start类中引用的内容未找到:它是ClassDefNotFoundException,这是最难解决的错误之一。它可以防止类加载器加载你的Start类。
前进的最佳方式是IMO将生成一个新的快速启动,运行它,并将内容从您自己的启动类移动到快速启动类,直到它崩溃。