# Rest mit Java 11



## malt1981 (22. Sep 2019)

Hallo zusammen,
ich bin gerade etwas am verzweifeln mit meinem Rest Webservice und java11.
Mein Webservice funktioniert mit java 8 problemlos. Ich möchte nun aber auf java11 umstellen und bekomme das leider nicht hin.
Ich nutze Maven und hätte so ein Projekt mit jersey probiert.

Ich habe herausgefunden, dass in java11 einige apis feheln, z.B.: jaxb.
Somit hätte ich folgende dependencys in meine pom eingebaut:


```
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
```

hat aber leider keinen Erfolg gebracht. Die Maven Library wird nicht um die neuen jars erweitert.

Meine Fehlermeldung beim hochfahren des Tomcat bezieht sich wie ich das sehe auf die Fehlenden api's.
Ich nutzte Tomcat 9, runtime natürlich auch java11.

Kann mir hier jemand helfen?
Gibt es nicht ein Maven repository für jersey und java11?
Ich finde leider nichts.

Ich wäre sehr dankbar für eure Hilfe, bin leider Anfänger - möchte aber gerne mit java11 arbeiten und nicht wieder zurück auf java8.
Vielen Dank.


----------



## malt1981 (22. Sep 2019)

Hier noch meine komplette pom wenn das hilft


```
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>org.koushik.javabrains</groupId>
    <artifactId>messenger</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>messenger</name>

    <build>
        <finalName>messenger</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
           
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.11</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
       
       
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${jersey.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet-core</artifactId>
            <!-- use the following artifactId if you don't need servlet 2.x compatibility -->
            <!-- artifactId>jersey-container-servlet</artifactId -->
        </dependency>
        <!-- uncomment this to get JSON support
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-moxy</artifactId>
        </dependency>
        -->
    </dependencies>
    <properties>
        <jersey.version>2.16</jersey.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>
```


----------



## mrBrown (22. Sep 2019)

Wie sieht denn die Fehlermeldung aus?


Du hast btw (fast) alle Dependencies in `dependencyManagement`, bis auf den import sollten die in den normalem Dependencys angegeben sein, damit sie auch genutzt werden.


----------



## malt1981 (22. Sep 2019)

Hallo mrBrown,
vielen Dank, die Api's wurden jetzt geladen. Ich bekomme aber immer noch Fehler:

....
Caused by: java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache$OriginThreadAwareFuture.get(LRUHybridCache.java:164)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache.compute(LRUHybridCache.java:303)
    ... 156 morr
....


----------



## mihe7 (22. Sep 2019)

Nimm mal Jersey Version 2.29


----------



## malt1981 (22. Sep 2019)

nach zahllosen Versuchen habe ich es jetzt hin bekommen, dass der Tomcat hochfährt  
Danke allen.

Meine dependencies sind nun:

 <dependencies>

      <dependency>
          <groupId>asm</groupId>
          <artifactId>asm</artifactId>
          <version>3.3.1</version>
      </dependency>
      <dependency>
          <groupId>org.json</groupId>
          <artifactId>json</artifactId>
          <version>20170516</version>
      </dependency>
    <dependency>

    <!-- Jersey 2.29 -->
        <groupId>org.glassfish.jersey.bundles</groupId>
        <artifactId>jaxrs-ri</artifactId>
        <version>2.29</version>
    </dependency>


      <!-- fehlende apis Java11 -->
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.3.0.1</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.3.1</version>
        </dependency>  
    <!-- fehlende apis Java11 Ende -->          


  </dependencies>


Nun habe ich aber das Problem, dass die importe in den Java Classen nicht mehr aufgelöst werden 
z.B.: import.ws.rs.Path; --> "The import can not be resolved
was kann das nun wieder sein?
In der Maven Library ist enthalten: jaxrs-ri-2.29.jar mit dem Package javax.ws.rs mit der Classe Path....
Warum sagt nun eclipse, dass der Import nicht aufgelöst werden kann?


----------



## malt1981 (22. Sep 2019)

<scope>import</scope>  

jetzt geht, vielen Dank.


----------

