Java 无效的URL方案名称";http远程处理“;在运行应用程序jar时发生

Java 无效的URL方案名称";http远程处理“;在运行应用程序jar时发生,java,jms,wildfly,jndi,Java,Jms,Wildfly,Jndi,我正在使用一个JBoss JMS快速启动项目(HelloWorld JMS),它使用JMS写入消息队列。队列已在JBoss XML配置文件中定义。当我们从IDE运行应用程序时,它运行得非常好。但是,当我们将其打包为JAR时,我们开始看到异常: SEVERE: Exception NamingException: javax.naming.InvalidNameException: WFNAM00007: Invalid URL scheme name "http-remoting&qu

我正在使用一个JBoss JMS快速启动项目(HelloWorld JMS),它使用JMS写入消息队列。队列已在JBoss XML配置文件中定义。当我们从IDE运行应用程序时,它运行得非常好。但是,当我们将其打包为JAR时,我们开始看到异常:

SEVERE: Exception NamingException: javax.naming.InvalidNameException: WFNAM00007: Invalid URL scheme name "http-remoting"
我们还尝试:

http-remoting://127.0.0.1:8080
remoting+http://127.0.0.1:8080
但我们也有同样的例外

以下是我代码的主要部分:

private static final String DEFAULT_MESSAGE=“你好,世界!”;
私有静态最终字符串DEFAULT\u CONNECTION\u FACTORY=“jms/RemoteConnectionFactory”;
私有静态最终字符串DEFAULT_DESTINATION=“jms/queue/myqueue”;
私有静态最终字符串默认\u消息\u COUNT=“1”;
私有静态最终字符串默认值\u USERNAME=“john”;
私有静态最终字符串DEFAULT_PASSWORD=“doe”;
私有静态最终字符串INITIAL\u CONTEXT\u FACTORY=“org.wildfly.naming.client.WildFlyInitialContextFactory”;
私有静态最终字符串提供程序\u URL=“http-remoting://127.0.0.1:8080";
Context namingContext=null;
字符串userName=System.getProperty(“用户名”,默认用户名);
字符串password=System.getProperty(“password”,默认密码);
//为JNDI查找设置namingContext
最终属性env=新属性();
环境放置(Context.INITIAL\u Context\u工厂,INITIAL\u Context\u工厂);
put(Context.PROVIDER\u URL,System.getProperty(Context.PROVIDER\u URL,PROVIDER\u URL));
环境放置(Context.SECURITY\u主体,用户名);
环境放置(Context.SECURITY\u凭证、密码);
namingContext=新的初始上下文(env);
//执行JNDI查找
String connectionFactoryString=System.getProperty(“connection.factory”,默认连接工厂);
log.info(“试图获取连接工厂\”“+connectionFactoryString+”\”);
ConnectionFactory ConnectionFactory=(ConnectionFactory)namingContext.lookup(connectionFactoryString);
log.info(“在JNDI中找到连接工厂\”“+connectionFactoryString+”\);
此行出现异常:

ConnectionFactory ConnectionFactory=(ConnectionFactory)namingContext.lookup(connectionFactoryString);
以下是pom.xml中的依赖项:


org.jboss.eap
wildfly jms客户端bom
7.3.4.GA
聚甲醛
org.jboss.eap
wildfly ejb客户端bom
7.3.4.GA
聚甲醛
org.jboss.spec.javax.jms
jboss-jms-api_2.0_规范
1.0.0.Final-redhat-1
公地io
公地io
2.8.0
org.jboss
JBossEJB客户端
4.0.37.最终版本
org.wildfly.common
普通野蝇
1.5.4.4最终版本
org.jboss.remotingjmx
远程jmx
3.0.4.4最终版本

在我看来,类路径上有重叠的类。我在您的
pom.xml
中看到了同样的情况。这将导致在运行时加载错误的类

例如,如果您查看该项目,您将看到它只使用
wildflyjms客户机bom
。事实上,这种“bom”(即物料清单)的全部要点是将所有必需的依赖项合并到单个依赖项中。因此,我建议您只在
pom.xml
中使用它:


org.jboss.eap
wildfly jms客户端bom
7.3.4.GA
聚甲醛

类似地,在应用程序的类路径上,您的类路径(或聚合的等价物)上应该只有
wildfly jms客户端bom
的依赖项。

在我看来,您的类路径上有重叠的类。我在您的
pom.xml
中看到了同样的情况。这将导致在运行时加载错误的类

例如,如果您查看该项目,您将看到它只使用
wildflyjms客户机bom
。事实上,这种“bom”(即物料清单)的全部要点是将所有必需的依赖项合并到单个依赖项中。因此,我建议您只在
pom.xml
中使用它:


org.jboss.eap
wildfly jms客户端bom
7.3.4.GA
聚甲醛

同样,在应用程序的类路径上,您的类路径(或聚合的等效项)上应该只有
wildfly jms客户端bom
的依赖项。

很抱歉联系得太晚。它不起作用。你有没有其他的解决方案,我应该试试?所以你在
pom.xml
中唯一的依赖是
org.jboss.eap:wildfly jms客户端bom
,你仍然得到同样的异常?如果是这样的话,我不知道为什么这对HelloWorld JMS项目有效,而不是你的项目。您可能想在问题中添加一个更新,详细说明您尝试了什么。问题不在于应用程序。应用程序在IDE中运行得非常好。只有当我将其打包到jar中并尝试运行它时,才会发生异常。我在问题中也提到了这一点。你是对的,唯一的依赖就是你提到的。然而,当我把它作为一个jar运行时,我仍然看到同样的异常。作为一个应用程序(exe),它运行得非常好,并且正确地完成了它所做的事情。我假设应用程序的类路径是从Maven依赖项列表构建的。我会更新我的答案。对不起,我联系晚了。它不起作用。你有没有其他的解决方案,我应该试试?所以你在
pom.xml
中唯一的依赖是
org.jboss.eap:wildfly jms客户端bom
,你仍然得到同样的异常?如果是这样的话,我不知道为什么这对HelloWorld JMS项目有效,而不是你的项目。您可能想在问题中添加一个更新,详细说明您尝试了什么。问题不在于应用程序。应用程序在IDE中运行得非常好。只有当我将其打包到jar中并尝试运行它时,才会发生异常。我在问题中也提到了这一点。你是对的,唯一的依赖就是你提到的。然而,当我把它作为一个jar运行时,我仍然看到同样的异常。作为一个应用程序(exe),它运行得非常好,并且正确地完成了它所做的事情。我以为你