JAVA无效目标发行版 17 的解决方案

文章讲述了在使用ApacheMaven时遇到的编译错误,由于Maven设置中配置了JDK17,导致在项目默认或特定模块上编译失败。解决方法包括修改Java编译器版本、调整项目字节码版本以及检查setting.xml配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project FlinkTutorial: Fatal error compiling: 无效的目标发行版: 17 -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

还有打包的时候一直出现JAVA无效目标发行版 17中问题,除了从设置中的Java编译器修改模块和项目的字节码版本修改成对应的版本.

或者是在项目结构的项目或者是模块中设置为语言和编译器为JDK8还有就是可能在使用的时候Mavan中的配置为JDK17

我是因为在这个Maven的setting.xml配置文件中配置了JDK17所以每次编译的时候都会出现这个问题.

### Spring Boot 实现 OSS 文件上传 #### 1. 添加依赖项 为了在Spring Boot项目中实现OSS文件上传功能,首先需要引入必要的Maven或Gradle依赖。对于阿里云OSS来说,可以在`pom.xml`文件中加入如下依赖: ```xml <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-oss</artifactId> <version>3.10.0</version> </dependency> ``` 此部分确保了应用程序能够访问并调用阿里云提供的SDK接口来完成文件的操作。 #### 2. 配置参数设置 接着,在项目的application.yml或application.properties配置文件内指定连接到特定区域下的Bucket所需的信息,包括但不限于Endpoint、Access Key ID 和 Secret等认证凭证[^3]。 ```yaml aliyun: oss: endpoint: https://oss-cn-beijing.aliyuncs.com accessKeyId: LTAI5tGxXXXXXXXXXX accessKeySecret: XXXXXXXX9vHn8mLqkQxxxxxxxxxxxxxx bucketName: test-bucket-name ``` 以上配置指定了目标存储空间的位置和服务地址,同时提供了身份验证所需的密钥信息以便后续操作时使用。 #### 3. 创建Service层逻辑处理类 定义一个名为`FileUploadService.java`的服务类用于封装具体业务流程,比如初始化客户端实例、执行上传动作以及关闭资源释放等功能模块。以下是该类的一个简单实现方式: ```java import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; public class FileUploadService { private final String endpoint; private final String accessKeyId; private final String accessKeySecret; private final String bucketName; public FileUploadService(String endpoint, String accessKeyId, String accessKeySecret, String bucketName) { this.endpoint = endpoint; this.accessKeyId = accessKeyId; this.accessKeySecret = accessKeySecret; this.bucketName = bucketName; } /** * 将本地路径指向的文件上传至指定bucket下,并返回其URL链接 */ public String uploadFileToOss(MultipartFile file) throws IOException { try (OSS client = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret)) { InputStream inputStream = file.getInputStream(); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType(file.getContentType()); PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, file.getName(), inputStream); putObjectRequest.setMetadata(metadata); client.putObject(putObjectRequest); // 执行上传命令 return "https://" + bucketName + "." + endpoint.replace("http://", "") + "/" + file.getName(); // 返回外网可访问url } } } ``` 这段代码展示了如何通过Java API与阿里云OSS交互,实现了基本的文件上传过程。注意这里假设传入的是一个多部件形式的数据流(`MultipartFile`),这通常是从HTTP请求体中获取而来。 #### 4. 控制器方法编写 最后一步是在控制器(Controller)层面暴露RESTful风格API给前端调用者,允许他们提交待上传的内容。下面是一个简单的例子展示怎样接收POST请求并将接收到的文件传递给之前创建好的service来进行实际传输工作: ```java @RestController @RequestMapping("/api/files") public class FileController { @Autowired private FileUploadService fileUploadService; @PostMapping(value="/upload", consumes="multipart/form-data") public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file){ if (!file.isEmpty()) { try { String url = fileUploadService.uploadFileToOss(file); return ResponseEntity.ok(url); } catch (IOException e) { log.error(e.getMessage(),e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); } }else{ return ResponseEntity.badRequest().body("Please select a valid file."); } } } ``` 上述片段说明了一个典型的Web MVC模式下的处理器函数设计思路——它负责解析来自用户的输入数据并通过适当的方式响应对方;如果一切顺利,则会给出新生成的对象位置作为反馈;反之则报告错误详情。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值