Java 无法加载主类
目录结构Java 无法加载主类,java,Java,目录结构 package org; import java.io.*; import java.util.Hashtable; import javax.jms.JMSException; //Few more public class QueueSend { public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory"; public final static String JMS_F
package org;
import java.io.*;
import java.util.Hashtable;
import javax.jms.JMSException;
//Few more
public class QueueSend
{
public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";
public final static String JMS_FACTORY="QCF";
public final static String QUEUE="TestQ";
private QueueConnectionFactory qconFactory;
private QueueConnection qcon;
private QueueSession qsession;
private QueueSender qsender;
private Queue queue;
private TextMessage msg;
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();
}
public void send(String message) throws JMSException {
msg.setText(message);
qsender.send(msg);
}
public void close() throws JMSException {
qsender.close();
qsession.close();
qcon.close();
}
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.out.println("Usage: java QueueSend WebLogicURL");
return;
}
InitialContext ic = getInitialContext(args[0]);
QueueSend qs = new QueueSend();
qs.init(ic, QUEUE);
readAndSend(qs);
qs.close();
}
private static void readAndSend(QueueSend qs) throws IOException, JMSException
{
String line="Test Message Body with counter = ";
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
boolean readFlag=true;
System.out.println("\n\tStart Sending Messages (Enter QUIT to Stop):\n");
while(readFlag)
{
System.out.print("<Msg_Sender> ");
String msg=br.readLine();
if(msg.equals("QUIT") || msg.equals("quit"))
{
qs.send(msg);
System.exit(0);
}
qs.send(msg);
System.out.println();
}
br.close();
}
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);
}
}
编撰
org
QueueSend.java
pwd
/path-to/org
在组织内部创建类文件
javac QueueSend.java
跑
找不到或加载主类错误
然后我搬了进去
java QueueSend t3://localhost:7001
执行相同的run命令并得到相同的错误。我知道我们必须使用完全限定的名称
它是org.QueueSend
,但我遗漏了一些东西
原因可能是什么?如何解决这个问题?看起来像是一个打字错误——大写字母S
您的类和Java文件已发送。您的run命令具有Queuesend。您必须调用
java-cp./org.Queuesend t3://localhost:7001
。包名是类名的一部分。还必须将实际路径添加到类路径,因此,jre的外观是针对类的。是java Queuesend t3
还是java Queuesend t3
?您是否使用了完全限定名?@GopsAB我觉得很奇怪,您在使用WebLogic中间件时,不知道如何从命令行编译和运行java类。不管怎么说,这里有一个@Kayaman极大的侮辱。不过,谢谢。@GopsAB这不是侮辱。您正在处理一个高级问题,但是您首先遇到了这个问题,并且您发布了另一个涉及类路径问题的问题(因此我假设您成功运行了该程序?)。我给了你一个Oracle教程的链接,该教程解释了Netbeans和命令行编译/执行。很抱歉,这里有一个输入错误。不在我的编译器中。所以它没有help@GopsAB我改变了答案。您还必须将实际路径添加到类路径中。您能显示文件结构吗?类文件所在的位置包名是什么。@GopsAB,您从org所在的目录调用它吗?
java QueueSend t3://localhost:7001
cd org