2015-10-14 38 views
5

我使用Eclipse Luna(版本4.4.2)和Glassfish 4使用JAX-RS構建REST Web應用程序。在Eclipse和Glassfish中使用JAX-RS時未找到類

下面的一段代碼,這只是一個很簡單的帖子以前的工作就好了REST API,已經開始拋出一個非常奇怪的錯誤:

@POST 
public Response addToWatchlist(WatchlistEntry watchlistentry) 
{ 
    return Response.ok(watchlist_service.addToWatchlist(watchlistentry).toString()).build(); 
} 

下面的錯誤是:

Warning: StandardWrapperValve[Jersey Web Application]: Servlet.service() for servlet Jersey Web Application threw exception 
java.lang.ClassNotFoundException: javax.xml.parsers.ParserConfigurationException not found by org.eclipse.persistence.moxy 

所有我已經能夠了解這是該網頁: https://java.net/jira/browse/JERSEY-2888

一位評論說,這已在EclipseLink 2.6.1和Jersey 2.19中修復。

我非常新的使用Maven和Eclipse - 假設以上是正確的,我怎麼得到我的Maven項目在Eclipse更新版球衣?另外我如何更新EclipseLink版本?他們的網站似乎只擁有2.6.0版本:http://www.eclipse.org/eclipselink/#download

我認爲這一切都可以通過Eclipse本身做什麼?

所有幫助表示感謝!

編輯1:好像EclipseLink的2.6.1已經發布了2015年10月15日,你可以在這裏看到:但是http://www.eclipse.org/eclipselink/releases/

,你可以在這裏看到,它似乎並不有被納入日食的「幫助 - >更新軟件」:http://download.eclipse.org/rt/eclipselink/updates/

這是非常惱人的。

我正在構建我的REST網站,並且沒有PUT或POST會因此錯誤而起作用。

有沒有人知道如何獲得2.6.1的工作?我正在使用Maven jersey-quickstart-webapp項目。

這個bug是一個皇室的痛苦在臉上。

編輯2:我有一個黑客今天的工作。當我檢查programmtically在像下面運行時正在使用什麼版本的EclipseLink的,它告訴我它是2.6.1版本,即使錯誤仍然存​​在:

Class<?> myClass = Class.forName("org.eclipse.persistence.Version"); 
Method myMethod = myClass.getMethod("getVersion"); 
String version = myMethod.invoke(null).toString(); 
System.out.println("version = " + version); 

在一個相關的問題(How to find what version of EclipseLink my Eclipse Project is using?)我發現瞭如何找到glassfish用於eclipse的實際jar文件。它們位於glassfish/modules目錄中。 org.eclipse.persistence.core.jar文件裏面會有一個readme.html,它告訴你glassfish正在使用的eclipselink的版本。對我來說是2.6。

我手動更新org.eclipse.persistence.core.jar,並從Maven站點的最新版本的org.eclipse.persistence.moxy.jar文件。雖然這很不方便,但我不知道這樣做會產生什麼影響,它確實解決了這個問題。如果我找到正確的方法來做到這一點,我會在下面爲所有人和所有人寫一個答案。

+0

我很確定更新遊戲我2.6.1(但不是2.6.2),當我嘗試它們時二月-2016。 –

+0

是的 - 當我嘗試通過在我的項目中使用代碼來查看它使用的eclipselink的版本時,它說2.6.1。但是當我檢查glassfish/modules目錄下的實際org.eclipse.persistence.core.jar時,readme.html表示2.6。我仍然有錯誤發生! –

+1

當然,Eclipse中的更新與Glassfish可能使用的版本不同。 –

回答

1

該問題已通過更新glassfish正在使用的eclipselink版本解決。 Eclipse更新了它的版本,但glassfish需要它自己的更新。在這個答案中給出了需要放置在glassfish/modules目錄中的jar文件列表:How to change EclipseLink in GlashFish 4.0?

2

經歷澤西JIRA和eclipse鏈接的網站看起來像Eclipse 2.6.1鏈接仍處於開發階段,即尚未公佈。這就是爲什麼它不能下載。

要在maven中使用Jersey的更新版本,您需要根據您的pom.xml中的較新版本2.19進行賦值。

但是,由於eclipse link 2.6.1尚未發佈,所以即使您使用較新版本的Jersey,也可能沒什麼用處。但你仍然可以試試看。

+0

我已經更新了球衣版本,但是沒有任何區別。當新版本的eclipselink出來時,我如何更新它?日食會自動執行嗎? –

+0

我懷疑自動更新是否存在。您可以使用此鏈接http://download.eclipse.org/rt/eclipselink/updates/檢查Eclipse中'marketplace'的更新。目前它的最新版本是2.6.0。 –

2

要更新球衣的版本,找到下面的依賴,在你的pom.xml文件更新版本標記的價值

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>2.22.1</version> 
</dependency> 
2

哪個服務器,你部署到您的項目? Glassfish 4.1.1出現了很多問題(包括錯誤)。我降級到4.1,一切運行良好。這可能是由於4.1.1最新模塊(包含在服務器中的瓶子)的問題。我希望它有幫助。它不是最好的解決方案,但對我來說是一個臨時解決方案,直到我找到哪些模塊失敗。

+0

嗨Bisonfan95 - 我很新玻璃魚 - 我怎麼去降級版本 - 似乎無法找到任何東西在線告訴我該怎麼去...湯姆 –

+0

只需下載一個較舊的發行版。我使用netbeans,並且可以在設置我的項目時從嚮導下載任何發行版。如果Eclipse沒有這個選項,只需到官方的glassfish站點並搜索舊的發行版。乾杯:D – Bisonfan95

+0

哦,明顯地配置該項目,以便它部署在新的舊的Glassfish上,你下載了你生成並運行它的ehn:D – Bisonfan95