javax.transaction api:1.3的javac断言错误

javax.transaction api:1.3的javac断言错误,java,maven,jta,java-module,java-10,Java,Maven,Jta,Java Module,Java 10,环境: JDK:10 马文:3.5 Maven编译器插件:3.7.0 当我的项目依赖于javax.transaction api:1.2时,它编译时没有任何错误。我的module-info.java包含: module my.component { requires javax.transaction.api; // other required modules ... } module my.component { requires java.transactio

环境:

  • JDK:10
  • 马文:3.5
  • Maven编译器插件:3.7.0
当我的项目依赖于javax.transaction api:1.2时,它编译时没有任何错误。我的module-info.java包含:

module my.component {
    requires javax.transaction.api;
    // other required modules ...
}
module my.component {
    requires java.transaction;
    // other required modules ...
}
但是,当我的项目依赖于javax.transaction api:1.3时,java编译器会产生一个断言错误。请注意,在这种情况下,我的module-info.java包含:

module my.component {
    requires javax.transaction.api;
    // other required modules ...
}
module my.component {
    requires java.transaction;
    // other required modules ...
}
(因为在1.3版本的清单中,javax.transaction-api的自动模块名设置为java.transaction)

断言错误为:

Exception in thread "main" java.lang.AssertionError
    at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155)
    at jdk.compiler/com.sun.tools.javac.util.Assert.check(Assert.java:46)
    at jdk.compiler/com.sun.tools.javac.comp.Modules.enter(Modules.java:244)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.readSourceFile(JavaCompiler.java:829)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$ImplicitCompleter.complete(JavacProcessingEnvironment.java:1506)
    at jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:633)
    at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1308)
    at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.complete(Type.java:1139)
    at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.getTypeArguments(Type.java:1065)
    at jdk.compiler/com.sun.tools.javac.code.Printer.visitClassType(Printer.java:237)
    at jdk.compiler/com.sun.tools.javac.code.Printer.visitClassType(Printer.java:52)
    at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.accept(Type.java:992)
    at jdk.compiler/com.sun.tools.javac.code.Printer.visit(Printer.java:136)
    at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.java:197)
    at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.java:165)
    at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:111)
    at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:67)
    at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArgument(AbstractDiagnosticFormatter.java:183)
    at jdk.compiler/com.sun.tools.javac.util.AbstractDiagnosticFormatter.formatArguments(AbstractDiagnosticFormatter.java:165)
    at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:111)
    at jdk.compiler/com.sun.tools.javac.util.BasicDiagnosticFormatter.formatMessage(BasicDiagnosticFormatter.java:67)
    at jdk.compiler/com.sun.tools.javac.util.JCDiagnostic.getMessage(JCDiagnostic.java:771)
    at jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$DiagnosticSourceUnwrapper.getMessage(ClientCodeWrapper.java:799)
这看起来像是JRE中默认使用的java.transaction模块名与javax.transaction api:1.3 jar文件清单中声明的模块名之间的冲突


是否有编译器选项来防止发生此断言错误?

我无法重现您的问题。你能提供一个可验证的例子吗?