自从升级到MacOS 12后,当我运行用Maven编译的依赖于owlapi的项目时,owlapi依赖的Guice库在启动时抛出了几种不同类型的异常。我该怎么做才能解决这个问题?
例如:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.inject.internal.BytecodeGen.getClassLoader(Ljava/lang/Class;)Ljava/lang/ClassLoader;
com.google.inject.internal.MessageProcessor visit
INFO: An exception was caught and reported. Message: java.lang.NoSuchMethodException: uk.ac.manchester.cs.owl.owlapi.OWLOntologyFactoryImpl.<init>()
com.google.inject.CreationException: Unable to create injector, see the following errors:
1) An exception was caught and reported. Message: Injection failed for interface OWLOntologyFactory
at [unknown source]
1 error
======================
Full classname legend:
======================
OWLOntologyFactory: "org.semanticweb.owlapi.model.OWLOntologyFactory"
========================
End of classname legend:
========================
at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:576)
at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:163)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
at com.google.inject.Guice.createInjector(Guice.java:87)
at com.google.inject.Guice.createInjector(Guice.java:69)
at com.google.inject.Guice.createInjector(Guice.java:59)
at org.semanticweb.owlapi.apibinding.OWLManager.<clinit>(OWLManager.java:42)
... 2 more
下面是我正在使用的pom文件中的依赖项:
<dependencies>
<dependency>
<groupId>net.sourceforge.owlapi</groupId>
<artifactId>jfact</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.6.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sourceforge.owlapi</groupId>
<artifactId>owlapi-rio</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>net.sourceforge.owlapi</groupId>
<artifactId>owlapi-distribution</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>ch.securityvision</groupId>
<artifactId>xattrj</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
1条答案
按热度按时间mqxuamgl1#
guice依赖几年前就从owlapi的5.x分支中删除了。尝试将owlapi更新到5.1.20并删除pom中显式的guice依赖。这应该会排除所有guice引用。如果必要的话,也将其从jfact依赖中排除(我没有在任何超过8的java版本中尝试过jfact,但我希望它能工作,它没有任何已知的与较新的jdk不兼容的特性。