0

0

Maven 编译本身给出 UnsupportedOperationException

王林

王林

发布时间:2024-02-09 11:39:08

|

1305人浏览过

|

来源于stackoverflow

转载

php小编鱼仔maven是一款流行的java项目管理工具,但在使用过程中可能会遇到一些问题。其中,一个常见的问题是在编译过程中出现unsupportedoperationexception异常。这个异常通常表示maven在尝试编译自身时遇到了不支持的操作。本文将详细介绍这个问题的原因,并提供解决方案,以帮助开发者顺利解决这个问题。

问题内容

对于相同的 maven jdk 21 项目签出。使用相同版本的 jdk 和 maven,虽然 maven 在其他 windows 10 计算机上进行编译,但在我的 windows 10 计算机上进行相同更新的 maven 编译时出现以下异常

java.lang.UnsupportedOperationException

        at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.ensureFile(ZipFileSystemProvider.java:87)
    
        at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:119)
    
        at jdk.compiler/com.sun.tools.javac.file.JavacFileManager$ArchiveContainer.<init>(JavacFileManager.java:566)
    
        at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.getContainer(JavacFileManager.java:329)
    
        at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.pathsAndContainers(JavacFileManager.java:1078)
    
        at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.indexPathsAndContainersByRelativeDirectory(JavacFileManager.java:1033)
    
        at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228)
    
        at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.pathsAndContainers(JavacFileManager.java:1021)
    
        at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.list(JavacFileManager.java:777)
    
        at jdk.compiler/com.sun.tools.javac.main.DelegatingJavaFileManager.list(DelegatingJavaFileManager.java:83)
    
        at jdk.compiler/com.sun.tools.javac.code.ClassFinder.list(ClassFinder.java:752)
    
        at jdk.compiler/com.sun.tools.javac.code.ClassFinder.scanUserPaths(ClassFinder.java:696)
    
        at jdk.compiler/com.sun.tools.javac.code.ClassFinder.fillIn(ClassFinder.java:570)
    
        at jdk.compiler/com.sun.tools.javac.code.ClassFinder.complete(ClassFinder.java:311)
    
        at jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:682)
    
        at jdk.compiler/com.sun.tools.javac.code.Symbol$PackageSymbol.members(Symbol.java:1178)
    
        at jdk.compiler/com.sun.tools.javac.code.Symtab.listPackageModules(Symtab.java:901)
    
        at jdk.compiler/com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:345)
    
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:553)
    
        at jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:287)
    
        at jdk.compiler/com.sun.tools.javac.comp.Enter.classEnter(Enter.java:302)
    
        at jdk.compiler/com.sun.tools.javac.comp.Enter.complete(Enter.java:608)
    
        at jdk.compiler/com.sun.tools.javac.comp.Enter.main(Enter.java:592)
    
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:1072)
    
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:947)
    
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
    
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
    
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
    
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
    
        at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:136)
    
        at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:183)
    
        at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1140)
    
        at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:193)
    
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
    
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
    
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
    
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
    
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
    
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
    
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
    
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
    
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
    
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
    
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
    
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
    
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
    
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
    
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

尝试了不同版本的maven并重新安装了jdk 21和maven。并尝试使用不同版本的maven编译插件。 intellij rebuild可以使用jdk 21编译项目,但maven编译失败。从 intellij 或从命令提示符进行 maven 编译失败并出现异常。 maven在java 8上没有问题。但在jdk17和jdk21上有同样的问题。就在我的机器上。

解决方法

由于某种原因,您遇到了 maven 计算的路径不被 jdk 视为常规文件的问题。我以前没有见过这种场景,不过你可以自己看看。

Maven编译打包部署Liferay项目 WORD版
Maven编译打包部署Liferay项目 WORD版

本文档主要讲述的是Maven编译打包部署Liferay项目;主要介绍将maven和liferay-poerlet-archetype结合起来,改变传统的ant编译打包部署,希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看

下载

我让 intellij 使用 openjdk 21 分析 maven 项目的堆栈跟踪,发现抛出异常的代码如下所示:

private boolean ensureFile(Path path) {
        try {
            BasicFileAttributes attrs =
                Files.readAttributes(path, BasicFileAttributes.class);
            if (!attrs.isRegularFile())
                throw new UnsupportedOperationException();
            return true;
        } catch (IOException ioe) {
            return false;
        }
    }

所以你想知道的是抛出异常时path的值是什么。由于 jdk 内的此位置没有日志记录,最简单的方法是在调试模式下运行 maven 构建(或从命令行运行 mvndebug 并附加调试器)并在此处设置断点,然后在命中断点时检查变量.

当您看到该值时,您可能会立即清楚问题所在。我的猜测是您的主目录中的 .m2/repositories 文件夹已损坏,或者它引用了文件系统中不存在的文件或目录。

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

0

2025.09.15

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

443

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

605

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

443

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

605

2023.08.10

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1496

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1169

2023.07.27

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

835

2023.08.01

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号