从quickstart与Start.java的Wicket Jetty集成停止工作



我刚把我的(正在工作的)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’ing到目录,看到文件并在命令行上键入java Start.class也会出现相同的错误,但措辞略有不同。

Wicket和嵌入式jetty-classNotFoundException似乎是相关的,但并不像后面描述的那样,在加载Start类之后会发生错误。

我做了什么:

  1. 从存储库签出了项目
  2. 运行mvn干净安装
  3. 运行mvn eclipse:eclipse
  4. 在eclipse中创建项目
  5. 尝试启动应用程序
  6. 撞墙

老实说,我不认为这是三柱门或码头的问题,但由于他们都以某种方式参与其中,我希望有人解决了这个问题。。。

我检查过的东西:

  • 这个文件真的在那里,它是最新的,可读的
  • 我试着查看调用javap Start.class的字节码,但没有运气(ERROR:Could not find Start.class)
  • 使用文本编辑器打开类文件(看起来是"propperlybinary")
  • 运行mvn jetty:run(启动并运行jetty和webapp)

帮助:

正如Martijn所建议的那样,我抓住了一个全新的快速入门,并比较了入门课程。来自quickstart的那个工作得很好,我和diff工具唯一能找到的区别是连接器上的端口发生了变化,但来自quicksstart的类接受了这些,没有任何问题。然后,我将这个类从quickstart复制到我的项目中,它在Dummy.java的名称下运行良好。在删除了有问题的类,清理了工作区并将其重命名为Start.java后,它就停止了工作。将其重新命名为Dummy,使其恢复工作状态。

所以我找到了一个可行的变通办法,但仍然不知道出了什么问题。

您在Start类中引用的某个内容找不到:它是ClassDefNotFoundException,这是最难解决的错误之一。它阻止类加载器加载您的Start类。

IMO最好的方法是生成一个新的快速启动,运行它,并将东西从你自己的启动类转移到快速启动类,直到它崩溃。

最新更新