运行java的class文件时提示找不到主类
package com.essc.module_b.common.testMq2;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.concurrent.TimeoutException;
/**
* @Author:xsr
* @Date:2023/10/26 15:09
* 模拟worker 执行task
*/
public class Worker {
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("116.62.176.248");
connectionFactory.setPort(5672);
connectionFactory.setVirtualHost("/");
connectionFactory.setUsername("admin");
connectionFactory.setPassword("123");
//创建一个通道 channel
Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel();
//根据channel创建一个队列queue
String queueName="xsrQueue";
channel.queueDeclare(queueName,false,false,false,new HashMap<String,Object>());
//等待接收 阻塞
System.out.println("worker 正在等待 接收 消息");
//callback 监听queue 若有消息进来 通过handle函数进行处理
DeliverCallback deliverCallback= (consumerTag, delivery) -> {
//从delivery获取message byte[]
byte[] bodyBytes = delivery.getBody();
String message = new String(bodyBytes, StandardCharsets.UTF_8);
System.out.println("rece 接收到了一条消息:---"+message);
try {
doWork(message);
}catch (InterruptedException e) {
throw new RuntimeException("worker doWork失败",e);
} finally {
System.out.println(" [worker] Done");
}
};
CancelCallback cancelCallback = s -> System.out.println(": 当消费者取消订阅时,将调用此方法:cancelCallback的handle执行");
//channel 消费消息
channel.basicConsume(queueName,true,deliverCallback,cancelCallback);
}
private static void doWork(String task) throws InterruptedException {
// 每个点将占一秒钟的“工作”
for (char c:task.toCharArray()){
if(c=='.'){
Thread.sleep(1000);
}
}
}
}
运行下面命令 编译生成class文件
D:\idea_project\ESSC_REAR\src\main\java\com\essc\module_b\common\testMq2> javac -cp "D:\maven\CSSC_repository\com\rabbitmq\amqp-client\5.12.0\amqp-client-5.12.0.jar" Worker.java -encoding UTF-8
生成成功
然后执行class命令报错:找不到主类
已经尝试的解决方法:
- 删除package包,重新javac,java
- 返回一级目录去javac,然后java