2012-09-14 87 views
0

要做一些表面測試,我爲JUnit測試啓動一個嵌入式Jetty。我的測試從服務器調用一些頁面。從eclipse進行測試時,一切正常,classpath由「mvn eclipse:eclipse」創建。Embedded-Jetty和Maven中的ClassNotFound

當使用「mvn test」運行這些測試時,jsp-Compiler引發了很多ClassNotFoundException異常:javax.servlet。,javax.servlet.jsp和evene我自己生成的一些類。所有直接由servlet回答的請求都可以正常工作。

在我的測試用例中做了類似System.out.println(HttpServlet.class)的工作也很好。所以Jetty-JSP編譯器在編譯時似乎有些「特殊」。

任何人都知道如何說服Jetty編譯我的JSP?

回答

0

後,所有的問題似乎一直在內行依賴管理(或者是我讓行家來做)。我在我的類路徑(jsp-2.1,2.2.3,2.2.1,servlet 2.5,3.0,3.0.glassfish-style)中有一個真正的javax-artifacts亂七八糟的東西。所以在我清理依賴關係後,一切正常。現在我明白maven-.build的碼頭爲什麼沒有啓動。最後我不明白爲什麼在所有的碼頭出現在日食;)

0
+0

感謝您的回覆。如果以任何方式,我想從我的測試用例中啓動jetty作爲嵌入式服務器,這樣開發人員就可以直接在eclipse中開始他們的測試 – mibutec

+0

是的,絕對的,我們一直在碼頭本身做這些事情,碼頭中有很多例子嵌入式jetty使用的測試用例,並且有這個教程:http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty –

0

如果你看看pom of one jetty module你會看到:

<dependency> 
    <groupId>org.eclipse.jetty.orbit</groupId> 
    <artifactId>javax.servlet</artifactId> 
    <scope>provided</scope> 
</dependency> 

它dependes對自己的servlet-API類。

如果指定真實的servlet-API的依賴在你的項目的pom它會工作那麼也許:

​​
+0

我們依賴的servlet類與原來的spec類相同,它們只是爲eclipse重新打包原因,他們被簽名和打包,並且清單已經被清理以供OSGI使用,所以這是一個紅鯡魚 –