springboot踩坑日记-java: User-specified option “-proc:none“ is ignored for “xxx-xxx-common“. This compil

项目在使用IntelliJ IDEA内置构建时遇到错误,表现为User-specified option '-proc:none'被忽略及ClassCastException。问题可能源于Maven配置与IDE设置不一致。虽然通过Maven命令行构建成功,但在IDE中构建失败。解决方案可能涉及调整IDEA的Maven配置,确保其与项目的编译参数匹配。

环境:

  • java: 11.0.15.1
  • maven: 3.6.3
  • idea: 2021.1

核心错误信息:

java: User-specified option "-proc:none" is ignored for "xxx-xxx-common". This compilation parameter is set automatically according to project settings.
java: java.lang.ClassCastException: class com.sun.proxy.$Proxy27 cannot be cast to class com.sun.tools.javac.processing.JavacProcessingEnvironment (com.sun.proxy.$Proxy27 is in unnamed module of loader java.net.URLClassLoader @5ecddf8f; com.sun.tools.javac.processing.JavacProcessingEnvironment is in module jdk.compiler of loader 'app')
java: java.lang.ClassCastException: class com.sun.proxy.$Proxy27 cannot be cast to class com.sun.tools.javac.processing.JavacProcessingEnvironment (com.sun.proxy.$Proxy27 is in unnamed module of loader java.net.URLClassLoader @5ecddf8f; com.sun.tools.javac.processing.JavacProcessingEnvironment is in module jdk.compiler of loader 'app')

项目启动报错

Executing pre-compile tasks...
Loading Ant configuration...
Running Ant tasks...
Running 'before' tasks
Checking sources
Copying resources... [xxx-xxx-loyalty]
Copying resources... [xxx-xxx-core]
Copying resources... [xxx-xxx-common]
Copying resources... [xxx-xxx-api]
Copying resources... [xxx-xxx-adapter]
Parsing java... [xxx-xxx-common]
java: User-specified option "-proc:none" is ignored for "xxx-xxx-common". This compilation parameter is set automatically according to project settings.
java: java.lang.ClassCastException: class com.sun.proxy.$Proxy27 cannot be cast to class com.sun.tools.javac.processing.JavacProcessingEnvironment (com.sun.proxy.$Proxy27 is in unnamed module of loader java.net.URLClassLoader @5ecddf8f; com.sun.tools.javac.processing.JavacProcessingEnvironment is in module jdk.compiler of loader 'app')
java: java.lang.ClassCastException: class com.sun.proxy.$Proxy27 cannot be cast to class com.sun.tools.javac.processing.JavacProcessingEnvironment (com.sun.proxy.$Proxy27 is in unnamed module of loader java.net.URLClassLoader @5ecddf8f; com.sun.tools.javac.processing.JavacProcessingEnvironment is in module jdk.compiler of loader 'app')
Checking dependencies... [xxx-xxx-common]
Dependency analysis found 0 affected files
Errors occurred while compiling module 'accor-dfc-common'
javac 11.0.15.1 was used to compile java sources
Finished, saving caches...
Executing post-compile tasks...
Loading Ant configuration...
Running Ant tasks...
Synchronizing output directories...
2022/5/18, 9:18 上午 - Build completed with 2 errors and 0 warnings in 3 sec, 212 ms

排查:
使用maven命令构建成功,
在这里插入图片描述

使用idea内置构建失败

异常原因:
maven的问题,具体原因不太清楚

解决:
勾选
在这里插入图片描述

### Java中关于`--bootstrap-server`必须指定的参数错误解决方案 在Java中,当使用Kafka作为消息传递系统时,如果出现`java.lang.IllegalArgumentException: --bootstrap-server must be specified`错误,通常是因为Kafka客户端无法找到启动服务器的配置信息。以下是该问题的详细分析和解决方案。 #### 1. 错误原因 此错误的核心原因是Kafka客户端未正确配置`bootstrap.servers`参数。`bootstrap.servers`是Kafka客户端连接到Kafka集群所必需的参数,它指定了Kafka代理(Broker)的地址列表[^1]。如果此参数缺失或配置不正确,客户端将无法与Kafka集群建立连接。 #### 2. 解决方案 为了解决这个问题,需要确保以下几点: - **检查Kafka配置文件** 在Flume的Kafka Sink配置文件中,确认`bootstrap.servers`参数已正确设置。例如: ```properties agent.sinks.kafkasink.kafka.bootstrap.servers=localhost:9092 ``` 上述配置指定了Kafka Broker的地址为`localhost:9092`。如果没有此项配置,Flume启动时会抛出`Bootstrap Servers must be specified`的异常。 - **代码层面的配置** 如果是在Java代码中直接使用KafkaProducer或KafkaConsumer,需要确保在创建Kafka客户端时设置了`bootstrap.servers`参数。示例如下: ```java import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerConfig; import java.util.Properties; public class KafkaProducerExample { public static void main(String[] args) { Properties props = new Properties(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); // 设置Kafka Broker地址 props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); KafkaProducer<String, String> producer = new KafkaProducer<>(props); // 其他逻辑... } } ``` 在上述代码中,`ProducerConfig.BOOTSTRAP_SERVERS_CONFIG`被明确设置为`localhost:9092`,这是解决`--bootstrap-server must be specified`问题的关键[^4]。 - **Spring Boot环境下的特殊处理** 如果使用的是Spring Boot框架,并且遇到类似问题,可能是因为高版本Spring Boot需要手动引入`spring-cloud-starter-bootstrap`依赖。例如: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency> ``` 此外,还需要确保`application.yml`或`application.properties`文件中正确配置了`spring.cloud.stream.kafka.binder.brokers`参数。例如: ```yaml spring: cloud: stream: kafka: binder: brokers: localhost:9092 ``` 如果缺少上述依赖或配置,可能会导致`Param ‘serviceName‘ is illegal`等类似问题[^2]。 #### 3. 注意事项 - 确保Kafka服务正在运行,并且监听的端口与配置文件中的端口号一致。 - 如果使用的是分布式Kafka集群,`bootstrap.servers`应包含所有Broker的地址,例如:`broker1:9092,broker2:9092,broker3:9092`。 - 配置文件中的语法需正确,避免因拼写错误或格式问题导致配置失效。 ```java // 示例:Kafka Consumer配置 Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); // 必须指定Kafka Broker地址 props.put("group.id", "test-group"); props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); ``` #### 4. 总结 通过正确配置`bootstrap.servers`参数,无论是Flume、Kafka客户端还是Spring Boot环境下的应用,都可以有效解决`--bootstrap-server must be specified`的问题。同时,确保相关依赖已正确引入,以及Kafka服务正常运行。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘彦青-Yannis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值