weblogic12 最低java,java – Weblogic 12.1.3未找到PrivilegedActions类

本文介绍了一个使用JMS进行消息发送的简单项目,在尝试向队列发送消息时遇到NoClassDefFoundError错误的具体原因及解决方案。作者通过升级WebLogic版本并正确配置wlfullclient.jar库成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我创建一个简单的项目,调用一个jms队列并放入一条消息.

这里的代码:

public class QueueSend

{

// Defines the JNDI context factory.

public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";

// Defines the JMS context factory.

public final static String JMS_FACTORY="jms/MyConnectionFactory";

// Defines the queue.

public final static String QUEUE="jms/MyTestQueue";

private QueueConnectionFactory qconFactory;

private QueueConnection qcon;

private QueueSession qsession;

private QueueSender qsender;

private Queue queue;

private TextMessage msg;

/**

* Creates all the necessary objects for sending

* messages to a JMS queue.

*

* @param ctx JNDI initial context

* @param queueName name of queue

* @exception NamingException if operation cannot be performed

* @exception JMSException if JMS fails to initialize due to internal error

*/

public void init(Context ctx, String queueName)

throws NamingException, JMSException

{

qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);

qcon = qconFactory.createQueueConnection();

qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

queue = (Queue) ctx.lookup(queueName);

qsender = qsession.createSender(queue);

msg = qsession.createTextMessage();

qcon.start();

}

/**

* Sends a message to a JMS queue.

*

* @param message message to be sent

* @exception JMSException if JMS fails to send message due to internal error

*/

public void send(String message) throws JMSException {

msg.setText(message);

qsender.send(msg);

}

/**

* Closes JMS objects.

* @exception JMSException if JMS fails to close objects due to internal error

*/

public void close() throws JMSException {

qsender.close();

qsession.close();

qcon.close();

}

/** main() method.

*

* @param args WebLogic Server URL

* @exception Exception if operation fails

*/

public static void main(String[] args) throws Exception {

Context ic = getInitialContext("t3://localhost:7001");

QueueSend qs = new QueueSend();

qs.init(ic, QUEUE);

readAndSend(qs);

qs.close();

}

private static void readAndSend(QueueSend qs)

throws IOException, JMSException

{

qs.send("ciao");

System.out.println("JMS Message Sent: ciao \n");

}

private static InitialContext getInitialContext(String url)

throws NamingException

{

Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);

env.put(Context.PROVIDER_URL, url);

return new InitialContext(env);

}

}

当我启动main时,我有这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: weblogic/security/service/PrivilegedActions

at weblogic.jndi.WLSJNDIEnvironmentImpl.(WLSJNDIEnvironmentImpl.java:57)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:264)

at weblogic.jndi.internal.JNDIEnvironment.getJNDIEnvironment(JNDIEnvironment.java:37)

at weblogic.jndi.Environment.(Environment.java:92)

at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)

at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)

at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)

at javax.naming.InitialContext.init(InitialContext.java:244)

at javax.naming.InitialContext.(InitialContext.java:216)

at test.QueueSend.getInitialContext(QueueSend.java:109)

at test.QueueSend.main(QueueSend.java:86)

我和谷歌一起创建了PrivilegedActions在weblogic.security.service(weblogic-api.jar;我已经在我的项目中包含了这个jar但在内部它没有这个类)但只是12.1的问题. 3版?

谢谢你的回复

最佳答案 我找到了解决方案.

我已更新到12.2.1并生成了一个wlfullclient.jar.我已将其添加到Build Library Path并删除了WebLogic Libraries.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值