Java EE karşı test 6 API
JAX-RS ek olarak yazıyorum ve Maven bağımlılık olarak Java EE 6 API dahil.
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
Sonra küçük bir test çalışması var:
@Test
public void testIsWriteable() {
class SpecialViewable extends Viewable {
public SpecialViewable() {
super("test");
}
}
FreeMarkerViewProcessor processor = new FreeMarkerViewProcessor(null);
assertTrue(processor.isWriteable(SpecialViewable.class, null, null,
MediaType.WILDCARD_TYPE));
}
Ama bir hata alıyorum:
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/ws/rs/core/MediaType
...
Eğer Java EE API yerine JAX-RS bir uygulama olarak Jersey vardır. Eğer her şey yolunda.
BalusC ipucu ben tahmin ettim ne olduğunu sayesinde: EE 6 yöntem gövdesi olmadan, tek bir API Java From the java.net blog
Bu kodu yazabilirsiniz. kavanoz, ama tabii ki cannnot çalıştırın bununla uygulamanız beri 5 APİs ve sadece Java EE içerir herhangi bir yöntem gövdesi içermeyen. Eğer çalıştırmayı deneyin, bu alacağı özel durum:
Konuya özel "ana" java.lang.ClassFormatError: Yok Kod bu değil yöntem özniteliği yerli veya sınıf dosyası Özet javax/mail/Seans
Bir Java EE 5, yürütmek için uygulama, hala bir Java gerekir EE 5 kap, örneğin gibi Önemli olan uygulama sunucusu.
test
kapsamlı Jersy eklemek için denedim ama işe yaramadı.
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey-version}</version>
<scope>test</scope>
</dependency>
Nasıl sadece resmi Java EE API bağlı olan yazılım test edebilirim?
Çözüm
Sağlayıcı (Jersey) yerleştirilmesi gerekirönceAPI (javeee-apı) pom.xml.
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey-version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
CEVAP
Tabii bu sorunu çözmek ama Gömülü Önemli değil sağlar Java EE 6 bir uygulama. Senin için bu pom.xml
ekleyin:
<project>
...
<repositories>
<repository>
<id>glassfish-extras-repository</id>
<url>http://download.java.net/maven/glassfish/org/glassfish/extras</url>
</repository>
</repositories>
...
<dependencies>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
...
</dependencies>
...
</project>
Önemli glassfish-embedded-all
obje bildirmek içinöncejavaee-api
.
Java ile farklı sonuçlar's digest...
FileOutputstream performans FileChanne...
Sistem çağrı yöntemlerini Nasıl test.J...
Nasıl çoklu değerlere karşı bir değişk...
Timer ve TimerTask karşı Parçacığı Jav...