码农彭盛 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 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败