首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >难以捉摸的原因: org.jboss.remoting3.Remoting.createEndpoint()?:NoSuchMethodError

难以捉摸的原因: org.jboss.remoting3.Remoting.createEndpoint()?:NoSuchMethodError
EN

Stack Overflow用户
提问于 2017-07-30 23:45:33
回答 1查看 2.7K关注 0票数 1

许多人请求帮助解决这一错误:

代码语言:javascript
复制
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接口的结构不一致。有人能确认或纠正这一点吗?

下面是抛出上述错误的代码:

代码语言:javascript
复制
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都消失了。

第一误差

代码语言:javascript
复制
java.lang.ClassNotFoundException:
org.jboss.naming.remote.client.InitialContextFactory]

将jboss命名-1.0.7.final.jar添加到类路径中

二次误差

代码语言:javascript
复制
java.lang.NoClassDefFoundError:
org/jboss/logging/Logger

加了jbos-logging.jar

第三误差

代码语言:javascript
复制
java.lang.NoClassDefFoundError: 
org/xnio/Options

添加xnio 3.0.7.ga.jar

第四误差

代码语言:javascript
复制
java.lang.NoClassDefFoundError:
org/jboss/remoting3/spi/ConnectionProviderFactory

添加3.jar

第五误差

代码语言:javascript
复制
java.lang.NoClassDefFoundError:
org/jboss/ejb/client/EJBClientContextIdentifier

添加了jboss client-1.0.19.final.jar

最终和致命的错误(注意:所有NoClassDefFoundError都已清除)

代码语言:javascript
复制
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()方法的包?

还是我错过了一些重要的东西。

我的意思是,这确实解释了有多少个关于这个错误的问题:

代码语言:javascript
复制
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中的不一致。

EN

回答 1

Stack Overflow用户

发布于 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所需的。

希望能帮助别人。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45405797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档