码农彭盛 2010-03-21 09:03
浏览 286
已采纳

ejb3+jboss5.0 发送JMS消息,我写的客户端报ClassNotFound

代码如下:
[code="java"]
public static void main(String[] args) throws NamingException, JMSException {
Properties properties = new Properties();
properties.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
properties.setProperty("java.naming.provider.url", "localhost:1099");
properties.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext context = new InitialContext(properties);
QueueConnectionFactory factory = (QueueConnectionFactory) context.lookup("ConnectionFactory");
QueueConnection queueConnection = factory.createQueueConnection();
QueueSession queueSession = queueConnection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);

    Queue destination = (Queue) context.lookup("queue/MDBQueue");
    MessageProducer messageProducer = queueSession.createProducer(destination);
    TextMessage message = queueSession.createTextMessage("Hello,this is a queue");
    messageProducer.send(message);

    queueSession.close();
    queueConnection.close();

}

[/code]

异常是这样的:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/aop/advice/ClassifiedBindingCollection
at org.jboss.aop.AspectManager.(AspectManager.java:138)
at org.jboss.aop.AspectManager$1.run(AspectManager.java:286)
at org.jboss.aop.AspectManager$1.run(AspectManager.java:274)
at java.security.AccessController.doPrivileged(Native Method)
at org.jboss.aop.AspectManager.initManager(AspectManager.java:272)
at org.jboss.aop.AspectManager.instance(AspectManager.java:251)
at org.jboss.aop.AspectManager.instance(AspectManager.java:240)
at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.(ClientConnectionFactoryDelegate.java)
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
at java.lang.reflect.Field.getFieldAccessor(Field.java:899)
at java.lang.reflect.Field.getLong(Field.java:528)
at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1614)
at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:52)
at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:425)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.ObjectStreamClass.(ObjectStreamClass.java:413)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:547)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at java.rmi.MarshalledObject.get(MarshalledObject.java:142)
at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:712)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:629)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.javaeye.jashawn.ejbtest.MdbQueueClient.main(MdbQueueClient.java:31)
Caused by: java.lang.ClassNotFoundException: org.jboss.aop.advice.ClassifiedBindingCollection
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 36 more

一开始是另一个与AOP有关的异常,我到JBOSS网站上把JBOSS-AOP也下了下来,把里面lib文件夹下的包都拷到我的客户端程序的lib里,于是那个异常就解决了,可是新的异常又出现了,我找遍了Jar包,只看到一个ClassifiedBindingAndPointcutCollection的类,就是没看到一个ClassifiedBindingCollection的类,大家帮忙看一下这个异常的问题是什么?

  • 写回答

2条回答 默认 最新

  • qwe_rt 2010-03-21 12:10
    关注

    的确是你的版本问题!但是不是你的版本太低,而是你使用的版本要比你项目需要的版本要高。
    你下了最新的版本吧,
    最新版本号为:JBoss AOP - Version 2.0.0.GA(为JBoss AOP - Version 2.0.0.CR20之后的版本名),

    而正如你说的:这版本的只有ClassifiedBindingAndPointcutCollection类。
    因为从“JBoss AOP - Version 2.0.0.CR18”开始,将ClassifiedBindingCollection类改名为:ClassifiedBindingAndPointcutCollection。

    官方发布文档详细说明换名的原因:
    [quote]Move pointcuts and pointcutInfos into ClassifiedBindingCollection, and rename to ClassifiedBindingAndPointcutCollection [/quote]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器