2012-11-15 28 views
0

我剛剛檢查了我的(工作)檢票項目到一個新的開發機器,突然間,當我嘗試啓動碼頭時,我得到這個錯誤。從快速啓動Wicket Jetty與Start.java集成停止工作

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重建它。未找到的類是包含我嘗試運行的主要方法的類,並且應該啓動嵌入式碼頭。即使是進入目錄,查看文件並在命令行上鍵入java Start.class也會給出相同的錯誤,但措辭略有不同。

Wicket and embedded jetty - classNotFoundException似乎是相關的,但不是因爲那裏描述的錯誤發生在稍後和加載啓動類後。

我做了什麼:

  1. 簽出從庫中的項目
  2. 跑MVN全新安裝
  3. 跑MVN日食:日食
  4. 在Eclipse創建的項目
  5. 試圖啓動應用程序
  6. 撞牆

老實說,我不認爲這是一個檢票口或碼頭的問題,但由於他們都涉及不知怎的,我希望是誰的人已經和解決了這個問題...

事情我檢查:

  • 該文件是真的有,這是當前和可讀性
  • 我想看看字節碼調用javap Start.class沒有運氣(ERROR:Could not find Start.class
  • 打開使用文本編輯器(長相「propperly類文件二進制')
  • 運行mvn jetty:run(開始與web應用程序一起運行碼頭)

什麼幫助:

至於馬亭的建議,我抓住了一個新的快速啓動,並比較了啓動類。從quickstart工作得很好,唯一的區別是我的diff-tool和我能找到的是連接器上的端口改變了,但是快速入門的類接受了這些,沒有任何問題。然後我將這個類從quickstart複製到我的項目中,並且在Dummy.java的名字下工作得很好。刪除有問題的類後,清理工作區並將其重命名爲Start.java,它停止工作。將其重命名爲Dummy可以使其恢復到工作狀態。

所以我得到了一個工作的解決方法,但仍然不知道,什麼是錯的。

+0

日食也許吃你的運行配置?有時候,再次右鍵單擊該類並說「run as - > java application」會有所幫助。 –

+0

@ Carl-EricMenzel不幸的是,這並沒有幫助,但謝謝你的建議。 – Nicktar

回答

1

在你的Start類中沒有找到你引用的東西:它是一個ClassDefNotFoundException,它是最難解決的錯誤之一。它可以防止類加載器加載Start類。

向前發展的最佳方式是IMO將生成一個新的快速入門,運行它,並將東西從您自己的開始課程移到快速入門課程,直到它休息。

+0

謝謝,我會試一試並回報。 – Nicktar

+0

O.K.,這不是解決方案,但它使我走上了正確的軌道(解決這個問題,我還很不理解),謝謝。我把「解決方案」放到我的問題中,以便我可以接受你的答案。 – Nicktar

+0

thx!解釋了你在這裏提到的一些步驟:http://stackoverflow.com/a/28782191/1915920 –