import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.io.*;
import java.util.Hashtable;
public class QueueSend
{
public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.out.println("Usage: java examples.jms.queue.QueueSend WebLogicURL");
return;
}
InitialContext ic = getInitialContext(args[0]);
}
private static InitialContext getInitialContext(String url) throws NamingException
{
System.out.println("url is "+url);
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
env.put(Context.PROVIDER_URL, url);
return new InitialContext(env);
}
}
javac -cp wlthint3Client.jar QueueSend.java
创建QueueSend.class
java -cp wlthint3Client.jar QueueSend t3://localhost:7001
说
Exception in thread "main" javax.naming.NoInitialContextException: Cannot
instantiate class: weblogic.jndi.WLInitialContextFactory [Root exc
tion is
java.lang.ClassNotFoundException:weblogic.jndi.WLInitialContextFactory]
然后我检查了jar文件
javap -cp wlthint3client.jar weblogic.jndi.WLInitialContextFactory
显示
Compiled from "WLInitialContextFactory.java"
public class weblogic.jndi.WLInitialContextFactory implements
javax.naming.spi.InitialContextFactory {
public weblogic.jndi.WLInitialContextFactory();
public final javax.naming.Context
getInitialContext(java.util.Hashtable) throws
javax.naming.NamingException;
}
如何解决此错误?
答案 0 :(得分:1)
将当前目录添加到运行时类路径
java -cp wlthint3Client.jar;. QueueSend t3://localhost:7001
java
在使用-cp
标志时不包含当前路径,因此需要明确添加