首页 > 解决方案 > ClassNotFoundException:Java 11 上的 org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp

问题描述

我在我的 Java 类中使用 ant-nodeps.jar 通过组合插件来构建 EAR 文件。从 Java 8 迁移到 Java 11 后出现以下错误。

原因:找不到支持的正则表达式匹配器:java.lang.ClassNotFoundException: org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp at org.apache.tools.ant.util.regexp.RegexpFactory.newRegexp(RegexpFactory.java: 92) 在 org.apache.tools.ant.types.RegularExpression.init(RegularExpression.java:80) 在 org.apache.tools.ant.types.RegularExpression.getPattern(RegularExpression.java:110) 在 classpath//org。 apache.tools.ant.taskdefs.optional.ReplaceRegExp.doReplace(ReplaceRegExp.java:347) 在类路径//org.apache.tools.ant.taskdefs.optional.ReplaceRegExp.execute(ReplaceRegExp.java:503) 在类路径// org.app.tools.ant.appReplaceRegExp.replaceregexp(appReplaceRegExp.java:31) at classpath//org.app.tools.ant.appReplaceRegExp.replaceregexp(appReplaceRegExp.java:14) at org.app.assembler.war.WARAssembler .assembleScriptIncludes(WARAssembler.java:452) at org.app.assembler.war.WARAssembler.execute(WARAssembler.java:122) ... 35 更多原因:java.lang.ClassNotFoundException: org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp at java .base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java.base/java.lang .ClassLoader.loadClass(ClassLoader.java:521) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:398) at org.apache .tools.ant.util.ClasspathUtils.newInstance(ClasspathUtils.java:266) 在 org.apache.tools.ant.util.regexp.RegexpFactory.createRegexpInstance(RegexpFactory.java:107) 在 org.apache.tools.ant.util .regexp.RegexpFactory.newRegexp(RegexpFactory.java:72) ... 43 更多execute(WARAssembler.java:122) ... 35 更多原因:java.lang.ClassNotFoundException: org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass( BuiltinClassLoader.java:583) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 在 java .base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:398) at org.apache.tools.ant.util.ClasspathUtils.newInstance(ClasspathUtils. java:266) 在 org.apache.tools.ant.util.regexp.RegexpFactory.createRegexpInstance(RegexpFactory.java:107) 在 org.apache.tools.ant.util.regexp.RegexpFactory.newRegexp(RegexpFactory.java:72) ... 43 更多execute(WARAssembler.java:122) ... 35 更多原因:java.lang.ClassNotFoundException: org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass( BuiltinClassLoader.java:583) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 在 java .base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:398) at org.apache.tools.ant.util.ClasspathUtils.newInstance(ClasspathUtils. java:266) 在 org.apache.tools.ant.util.regexp.RegexpFactory.createRegexpInstance(RegexpFactory.java:107) 在 org.apache.tools.ant.util.regexp.RegexpFactory.newRegexp(RegexpFactory.java:72) ... 43 更多util.regexp.Jdk14RegexpRegexp 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 在 java.base/java.lang.Class.forName0(Native Method) 在 java.base/java.lang.Class.forName(Class.java :398) 在 org.apache.tools.ant.util.regexp.RegexpFactory.createRegexpInstance(RegexpFactory.java:107) 在 org.apache.tools.ant.util.ClasspathUtils.newInstance(ClasspathUtils.java:266) 在 org. apache.tools.ant.util.regexp.RegexpFactory.newRegexp(RegexpFactory.java:72) ... 43 更多util.regexp.Jdk14RegexpRegexp 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 在 java.base/java.lang.Class.forName0(Native Method) 在 java.base/java.lang.Class.forName(Class.java :398) 在 org.apache.tools.ant.util.regexp.RegexpFactory.createRegexpInstance(RegexpFactory.java:107) 在 org.apache.tools.ant.util.ClasspathUtils.newInstance(ClasspathUtils.java:266) 在 org. apache.tools.ant.util.regexp.RegexpFactory.newRegexp(RegexpFactory.java:72) ... 43 更多loadClass(ClassLoaders.java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 在 java.base/java.lang.Class.forName0(Native Method) 在 java.base/java。 org.apache.tools.ant.util.ClasspathUtils.newInstance(ClasspathUtils.java:266) 上的 lang.Class.forName(Class.java:398) org.apache.tools.ant.util.regexp.RegexpFactory.createRegexpInstance( RegexpFactory.java:107) 在 org.apache.tools.ant.util.regexp.RegexpFactory.newRegexp(RegexpFactory.java:72) ... 43 更多loadClass(ClassLoaders.java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 在 java.base/java.lang.Class.forName0(Native Method) 在 java.base/java。 org.apache.tools.ant.util.ClasspathUtils.newInstance(ClasspathUtils.java:266) 上的 lang.Class.forName(Class.java:398) org.apache.tools.ant.util.regexp.RegexpFactory.createRegexpInstance( RegexpFactory.java:107) 在 org.apache.tools.ant.util.regexp.RegexpFactory.newRegexp(RegexpFactory.java:72) ... 43 更多ant.util.regexp.RegexpFactory.newRegexp(RegexpFactory.java:72) ... 43 更多ant.util.regexp.RegexpFactory.newRegexp(RegexpFactory.java:72) ... 43 更多

我正在使用 ant-1.7.1 版本。知道如何解决这个问题吗?

标签: javaantjava-11

解决方案


考虑将 ant 版本升级到更新的版本。1.7.1 可以追溯到 2008 年 7 月,也就是 13 年前。


推荐阅读