Java jms客户端应用程序所需的最少JAR

Java jms客户端应用程序所需的最少JAR,java,jms,activemq,Java,Jms,Activemq,java JMS客户端应用程序需要哪一组jar来发布消息。 我的类路径上有activemq-client-5.13.3.jar。但这还不够,而且还不够 'Exception in thread "main" java.lang.NoClassDefFoundError: javax/management/j2ee/statistics/Stats'. 注意:-添加'activemq-all'jar时。它可以正常工作,但我不想添加这些多个jar,因为它大约有17MB Connection c

java JMS客户端应用程序需要哪一组jar来发布消息。 我的类路径上有activemq-client-5.13.3.jar。但这还不够,而且还不够

'Exception in thread "main" java.lang.NoClassDefFoundError: 
javax/management/j2ee/statistics/Stats'.
注意:-添加'activemq-all'jar时。它可以正常工作,但我不想添加这些多个jar,因为它大约有17MB

 Connection connection = null;

        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
        connection = connectionFactory.createConnection();
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Topic topic = session.createTopic("customerTopic");

        connection.start();

        String payload = "Important task";
        Message msg = session.createTextMessage(payload);
        MessageProducer producer = session.createProducer(topic);
        producer.send(msg);
        Thread.sleep(3000);
        session.close();

        if(connection != null) {
            connection.close();
        }
    }

一种简单的方法是使用maven和git中的ActiveMQ签出。移动到activemq客户机项目文件夹,让maven生成依赖关系树
mvn dependency:tree

[INFO] org.apache.activemq:activemq-client:bundle:5.15.10-SNAPSHOT
[INFO] +- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] +- org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1:compile
[INFO] +- org.fusesource.hawtbuf:hawtbuf:jar:1.11:compile
[INFO] +- org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar:1.0.1:compile
[INFO] +- commons-net:commons-net:jar:3.6:compile
[INFO] +- javax.jmdns:jmdns:jar:3.4.1:compile
[INFO] +- junit:junit:jar:4.12:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] \- org.slf4j:slf4j-log4j12:jar:1.7.25:test
[INFO]    \- log4j:log4j:jar:1.2.17:runtime

在您的情况下,您可以切换到5.13.3的发布标签,以获得确切的列表,尽管我认为自发布以来,它没有太大变化。当然,如果您使用maven构建项目,那么您也可以从项目目录进行构建,它将为您的整个项目提供依赖关系树。

一个简单的方法是使用maven,并从git中检出ActiveMQ。移动到activemq客户机项目文件夹,让maven生成依赖关系树
mvn dependency:tree

[INFO] org.apache.activemq:activemq-client:bundle:5.15.10-SNAPSHOT
[INFO] +- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] +- org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1:compile
[INFO] +- org.fusesource.hawtbuf:hawtbuf:jar:1.11:compile
[INFO] +- org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar:1.0.1:compile
[INFO] +- commons-net:commons-net:jar:3.6:compile
[INFO] +- javax.jmdns:jmdns:jar:3.4.1:compile
[INFO] +- junit:junit:jar:4.12:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] \- org.slf4j:slf4j-log4j12:jar:1.7.25:test
[INFO]    \- log4j:log4j:jar:1.2.17:runtime

在您的情况下,您可以切换到5.13.3的发布标签,以获得确切的列表,尽管我认为自发布以来,它没有太大变化。当然,如果您使用maven构建项目,那么您也可以从项目目录进行构建,它会为您的整个项目提供依赖关系树。

我同意您的回答,只想知道更多信息,有没有办法禁用这些JAR依赖关系。因为我只使用activemq客户机jar和geronimo-jms_1.1_spec jar编译上述代码。如果可能的话,我只想排除其他依赖项jar。如果你不关心它的工作,你可以将它们全部删除,否则,您的成功或失败取决于您的代码所做的,如果您遇到的代码路径使用了这些库中的一个库,那么事情很可能会发展迅速。我同意您的答案,只想知道更多信息,有没有任何方法可以禁用这些JAR依赖性。因为我只使用activemq客户机jar和geronimo-jms_1.1_spec jar编译上述代码。如果可能的话,我只想排除其他依赖项jar。如果你不关心它的工作,你可以将它们全部删除,否则你的成功或失败取决于你的代码做了什么,如果你遇到了使用这些lib之一的代码路径,而它不在那里,那么事情很可能会变得繁荣起来。