56

I need to import javax.jms.* classes. What is the right dependency to include into a Maven project? I'm trying javax.jms:jms:1.1, but no luck (it's pom, not jar).

ps. The only workaround I've found so far is: javax:javaee-api:6.0 (from Maven Central).

yegor256
  • 102,010
  • 123
  • 446
  • 597

9 Answers9

48

In ActiveMQ as well as some other projects like Qpid JMS we pull in the JMS spec classes from Apache Geronimo JARs, the 1.1 APIs are available in this dependency:

  <dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-jms_1.1_spec</artifactId>
    <version>1.1.1</version>
  </dependency>

For JMS 2 APIs you'd need to use a different dependency, for instance

  <dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-jms_2.0_spec</artifactId>
    <version>1.0-alpha-2</version>
  </dependency>

These are both Apache 2.0 licensed dependencies.

Another option which is not Apache licensed is here as others have pointed out.

<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
</dependency>
Tim Bish
  • 17,475
  • 4
  • 32
  • 42
16

The Sun license doesn't allow maven repositories to host this (and other) artifacts.

Here is the documentation explaining this and what you should do instead...

Maven - Guide to coping with Sun JARs

What it says is you need to download the JAR manually and then install it into your own local repository or nexus server.

The pom.xml files hosted at maven central for these artifacts contain information on where you can download the JARs from.

Jesse Webb
  • 43,135
  • 27
  • 106
  • 143
  • 2
    This should be the accepted answer, it explains the correct Maven approach for all Sun JARs. – sync Mar 19 '15 at 22:59
  • This is the right answer, although the link points to a page that is out of date (it gives misleading info about a Maven 2 repository). – vegemite4me Feb 26 '16 at 09:45
15
   <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>6.0</version>
      <scope>provided</scope>
    </dependency>
awareness
  • 159
  • 1
  • 2
  • 1
    javax.jms/jms does not exist anymore from http://download.java.net/maven/2/ but the javax/javaee-api does. I added this to my pom and my JMS dependency issue disappeared and I am able to build my app successfully. The article posted above by Jesse Webb's URL link on "Maven - Guide to coping with Sun JARs" seems outdated. – awareness Jun 26 '12 at 00:21
  • I like this answer the best, apparently, this should be the "orthodox" dependency to use. – ibic Jan 29 '19 at 06:06
7

I have successfully used this one:

<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>jms</artifactId>
    <version>1.1</version>
</dependency>
Bozho
  • 588,226
  • 146
  • 1,060
  • 1,140
  • 1
    I've seen your example [in your blog](http://techblog.bozho.net/?p=208). You're getting this artifact from jboss repository, which is no longer available [there](http://repository.jboss.org/maven2/javax/jms) – yegor256 Jun 13 '11 at 18:20
  • I just added it, and it is in the main repo – Bozho Jun 13 '11 at 20:55
3

Go to Maven Search site and search for javax. Open the latest version for groupId javax and artifactId javaee-api

The current version is 7.0 [Maven dependency information]

ram
  • 747
  • 2
  • 11
  • 34
3

If you just want the JMS libs, without the rest of javaee, use the following:

https://mvnrepository.com/artifact/javax.jms/javax.jms-api/2.0.1

<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
</dependency>
jase
  • 406
  • 4
  • 8
1

According to mvnrepository, the dependency to add in the pom of your project is the following:

<dependency>
  <groupId>jms</groupId>
  <artifactId>jms</artifactId>
  <version>1.1</version>
</dependency>
talnicolas
  • 13,885
  • 7
  • 36
  • 56
1

Check out the dependencies listed on grepcode.com.
I only discovered this site recently, and it rocks!

http://grepcode.com/search/?query=javax.jms.*

It looks like the Geronimo jars on maven central should sort your issues out.

crowne
  • 8,456
  • 3
  • 35
  • 50
0

This worked for myself

    <dependency>
        <groupId>javax.jms</groupId>
        <artifactId>javax.jms-api</artifactId>
        <version>2.0.1</version>
    </dependency>
C McShane
  • 3
  • 4