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.(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 视为常规文件的问题。我以前没有见过这种场景,不过你可以自己看看。

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

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

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

下载
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

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

843

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

742

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

740

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

400

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

431

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

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

精品课程

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

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