SORU
6 AĞUSTOS 2010, Cuma


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
6 AĞUSTOS 2010, Cuma


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8bitdigitaltv

    8bitdigitalt

    31 AĞUSTOS 2011
  • Jonah Penna

    Jonah Penna

    11 EYLÜL 2005
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011