许多人请求帮助解决这一错误:
javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.NoSuchMethodError: org.jboss.remoting3.Remoting.createEndpoint(Ljava/lang/String;Lorg/xnio/OptionMap;)Lorg/jboss/remoting3/Endpoint;]
at
org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:51)
at
org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:152)
at
javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
...但我所能找到的任何要求都不能给出一个决定性的答案。只是建议用罐子修补一下。
我相信这是因为Jboss接口的结构不一致。有人能确认或纠正这一点吗?
下面是抛出上述错误的代码:
final private Properties env = new Properties() {
{put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
put(Context.PROVIDER_URL, "http-remoting://localhost:9990");
put(Context.SECURITY_PRINCIPAL, "myID");
put(Context.SECURITY_CREDENTIALS, "myPassword");
put("jboss.naming.client.ejb.context", true);
}
};
/****************************************************
* myID & myPassword open the Admin GUI for wildfly *
* on localhost:9990 *
****************************************************/
Context ctx = new InitialContext(this.env);为了确定所需的jars,我从构建路径中删除了所有jars。然后我运行我的程序,直到所有的ClassNotFoundException都消失了。
第一误差
java.lang.ClassNotFoundException:
org.jboss.naming.remote.client.InitialContextFactory]将jboss命名-1.0.7.final.jar添加到类路径中
二次误差
java.lang.NoClassDefFoundError:
org/jboss/logging/Logger加了jbos-logging.jar
第三误差
java.lang.NoClassDefFoundError:
org/xnio/Options添加xnio 3.0.7.ga.jar
第四误差
java.lang.NoClassDefFoundError:
org/jboss/remoting3/spi/ConnectionProviderFactory添加3.jar
第五误差
java.lang.NoClassDefFoundError:
org/jboss/ejb/client/EJBClientContextIdentifier添加了jboss client-1.0.19.final.jar
最终和致命的错误(注意:所有NoClassDefFoundError都已清除)
java.lang.NoSuchMethodError: org.jboss.remoting3.Remoting.createEndpoint(Ljava/lang/String;Lorg/xnio/OptionMap;)Lorg/jboss/remoting3/Endpoint;]使用Eclipse的,我验证了:
具有org.jboss.emoting3.Remoting类。
b.远程处理类具有以下方法:
公共端点createEndpoint (String,Executor,OptionMap)
注意,它需要3个参数。
但是上面最后的致命错误
公共端点createEndpoint (String,OptionMap)
注意:它需要2个参数。因此出现了NoSuchMethodError。
查看堆栈跟踪中的顶级行,我猜org.jboss.naming.remote.client.InitialContextFactory.getInitialContext()正在尝试使用两个参数调用org.jboss.remoting3.Remoting.createEndpoint(),但是org.jboss.emoting3.Remoting只定义了具有3-参数签名的createEndpoint()。
难道这是可能的吗?一个jar说它有一个org.jboss.remoting3包,它的远程处理类有一个带有3个参数签名的createEndpoint()方法,而另一个jar说它有一个org.jboss.remoting3包,它的远程处理类有另一个带有两个参数签名的createEndpoint()方法?
帮助!
我的意思是,是否需要查看每个org.jboss.remoting3包以找到其远程处理类具有2参数createEnpoint()方法的包?
还是我错过了一些重要的东西。
我的意思是,这确实解释了有多少个关于这个错误的问题:
javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.NoSuchMethodError: org.jboss.remoting3.Remoting.createEndpoint(Ljava/lang/String;Lorg/xnio/OptionMap;)Lorg/jboss/remoting3/Endpoint;]并解释为什么除了摆弄罐子和构建路径之外,没有其他决定性的解释或解决方案。
我的意思是,从运行在与Java程序相同的PC上运行InitialContext的WildFly应该是一个简单的过程。但事实并非如此。可能是因为API中的不一致。
发布于 2017-07-31 01:46:47
感谢Christoph B hme:
jboss-logging-3.1.4.GA.jar有一个带有远程处理类的org.jboss.remeoting包,该包具有带有0、2和3参数签名的createEndpoint()。
用上面的jar替换jboss-remoting-4.0.7.Final.jar是清除NoSuchMethodError所需的。
希望能帮助别人。
https://stackoverflow.com/questions/45405797
复制相似问题