Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Do I need stax-api-1.0.x in my web app when using JDK 1.6?

Tags:

java

xml

stax

I am currently developing a web app that uses Jersey for REST. I use maven, and both stax-api-1.0.1 and 1.0.2 are pulled into my web-inf/lib. I thought the stax api were a aprt of JDK1.6?

Why are those JARS included in my web application?

Here is my pom.xml

<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>com.glennbech</groupId>
    <artifactId>simplerest</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>Simplerest Maven Webapp. Very simple REST.</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <!-- Jersey for REST -->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
            <version>1.9</version>
        </dependency>

        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-json</artifactId>
            <version>1.9</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.17</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>simplerest</finalName>
        <plugins>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.25</version>
                <configuration>
                    <contextPath>/</contextPath>
                    <scanIntervalSeconds>5</scanIntervalSeconds>
                </configuration>
            </plugin>
        </plugins>

</build>

like image 996
Glenn Bech Avatar asked Sep 10 '11 19:09

Glenn Bech


1 Answers

This question was answered in the comment field of the question. Kudos to Paul Grime.

stax does come included in Java 1.6, but Maven does not know you are deploying your app to a Java 1.6 runtime. Nor do your dependencies know what runtime you are using. In fact, they may have been specifically written themselves to work with Java 1.5 or even earlier.

Yeah, [fixing it using maven exclusions] would be the easiest solution IMO. A next step could be to create different profiles for different target runtimes. E.g. a "1.6" profile would exclude stax etc, but a "1.5" profile would leave them in.

like image 71
2 revs, 2 users 67% Avatar answered Oct 30 '22 08:10

2 revs, 2 users 67%