2017-06-13 66 views
7

XML veya JSON (istek başlığına bağlı olarak) döndüren bir Jersey API'si geliştirdim. Windows 2012 sunucumda (Tomcat) konuşlandırıldığında sorun olmaz. Json'dan Jersey'den Linux'a Dönme Atak İstisnası

Ben dağıtmak

AWS (Glassfish) bir Ubuntu makinesine (Ubuntu üzerinde derleme sonra), ben JSON istediğinde ben aşağıdaki hataları alıyorum:

The server encountered an internal error that prevented it from fulfilling this request. 

exception javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper 

root cause org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper 

root cause java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper 

Hata yok ben XML istediğinde.

Aslında JSON serileştirme için moxy kullanıyordum, ancak daha sonra Jackson'ı kullanmaya başladım.

Neden bir sunucu üzerinde çalışacak ve başka bir işe yaramayacağı hakkında bir fikrin var mı? Teşekkürler

+1

Glassfish'in bir hatası olabilir. Lütfen [bu sayfa] bölümüne bakın (https://stackoverflow.com/questions/33722764/glassfish-error-when-producing-json). –

+0

@KoheiTAMURA Evet Bunu gördüm. Şimdiye kadar düzeltmeleri gerektiğini düşündüm. Görünüşe göre değil ... – onefootswill

+0

Tüm Jersey ile ilgili bağımlılıkları "sağlanan" olarak koyarsanız? Tomcat'in içinde Jersey kavanozları olmadığını unutmayın, bu yüzden çatışma yoktur. Ama Glassfish _does_ Jersey var. Yani proje kavanozlarınız çatışabilir. Bu yüzden onları Glassfish'e dağıtırken dağıtımdan çıkarmalısınız ve sadece Glassfish tarafından sağlananları kullanın. –

cevap

0

Sonunda bu çalışma var. İlk önce Tomcat'ı kullan, Glassfish'i kullan.

Sonra yeni bir bağımlılık ekleyin: Ben de 2.26 Jersey sürümü yükseltilmiş

<dependency> 
    <groupId>org.glassfish.jersey.inject</groupId> 
    <artifactId>jersey-hk2</artifactId> 
</dependency> 

ama fark yaptığını sanmıyorum. Sadece tamlığı için bunu ekleyerek (olduğu gibi).

Çalışmanın nedenini anlamıyorum. Her zaman Java'nın Windows ve Linux'ta aynı olduğunu düşündüm. Ama hey, ben sadece aptal bir .NETliyim.

Bu, bu konuda kendimi bir çaresizlik çukurunda bulan diğerlerine yardımcı olur.