我知道在其他地方已经提出了一个(非常)类似的问题,但没有答案,所以我在这里发帖,希望新帖子能引发一些有价值的回应.
我正在尝试创建一个独立的应用程序,它将询问在websphere上运行的JMS队列.队列正在运行,因为本地应用程序能够与它通信,并且有消息在那里等着我.
我正在使用Netbeans并使用JDK1.8.另外我已经将以下jar文件添加到库中:
javax.jms-1.1.jar
com.ibm.ws.orb_8.5.0.jar
com.ibm.ws.ejb.thinclient_8.5.0.jar
Run Code Online (Sandbox Code Playgroud)
后两者是从websphere安装中复制的.
这是初始代码的摘要(它实际上是在一个类中构建的,其中包含上下文和工厂位的方法,因此修改了它以显示在这里):
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, corbaloc:iiop:192.168.254.202:2809);
try{
InitialContext jndiContext = new InitialContext(env);
}catch(NamingException e){
System.out.println("ERROR: Could not create JNDI context: " + System.lineSeparator() + e.toString());
System.exit(1);
}
ConnectionFactory connectionFactory= (ConnectionFactory) this.jndiContext.lookup(factory);
String outFactory = "jndi/OUTConnectionFactory";
try{
connectionFactory = (ConnectionFactory) jndiContext.lookup(outFactory);
}catch(Exception e){
System.out.println("ERROR: Could not create factory connection:");
System.out.println(e.toString());
System.exit(2);
}
Run Code Online (Sandbox Code Playgroud)
此时(connectionFactory = ...)它失败而没有触发catch
Exception in thread "P=598328:O=0:CT" java.lang.NoClassDefFoundError: sun/io/MalformedInputException
at com.ibm.rmi.iiop.CDRReader.getTcsCConverter(CDRReader.java:398)
at com.ibm.rmi.iiop.CDRReader.readStringOrIndirection(CDRReader.java:479)
at com.ibm.rmi.iiop.CDRReader.read_string(CDRReader.java:465)
at com.ibm.rmi.IOR.read(IOR.java:335) …Run Code Online (Sandbox Code Playgroud)