遇到类路径错误

时间:2015-03-05 18:37:29

标签: java

 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;
 }

如何解决此错误?

1 个答案:

答案 0 :(得分:1)

将当前目录添加到运行时类路径

java -cp wlthint3Client.jar;. QueueSend t3://localhost:7001

java在使用-cp标志时不包含当前路径,因此需要明确添加