Я работаю с lenskit и получаю эту ошибку
Exception in thread "main" java.lang.NoClassDefFoundError: javax/annotation/PreDestroy
at org.grouplens.grapht.LifecycleManager.registerComponent(LifecycleManager.java:52)
at org.grouplens.grapht.reflect.internal.ClassInstantiator.instantiate(ClassInstantiator.java:140)
at org.grouplens.grapht.Instantiators$ProviderInstantiator.instantiate(Instantiators.java:148)
at org.grouplens.grapht.Instantiators$MemoizingInstantiator.instantiate(Instantiators.java:184)
at org.lenskit.inject.NodeInstantiator$DefaultImpl.instantiate(NodeInstantiator.java:91)
at org.lenskit.inject.NodeInstantiator.apply(NodeInstantiator.java:70)
at org.lenskit.inject.NodeInstantiator$DefaultImpl.apply(NodeInstantiator.java:82)
at org.lenskit.inject.InstantiatingNodeProcessor.processNode(InstantiatingNodeProcessor.java:54)
at org.lenskit.inject.NodeProcessors.processNodes(NodeProcessors.java:92)
at org.lenskit.inject.RecommenderInstantiator.replaceShareableNodes(RecommenderInstantiator.java:113)
at org.lenskit.inject.RecommenderInstantiator.instantiate(RecommenderInstantiator.java:82)
at org.lenskit.LenskitRecommenderEngineBuilder.build(LenskitRecommenderEngineBuilder.java:144)
at org.lenskit.LenskitRecommenderEngineBuilder.build(LenskitRecommenderEngineBuilder.java:112)
at org.lenskit.cli.util.RecommenderLoader.loadEngine(RecommenderLoader.java:87)
at org.lenskit.cli.commands.GlobalRecommend.execute(GlobalRecommend.java:72)
at org.lenskit.cli.Main.main(Main.java:73)
Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 16 more
В нем говорится, что класс аннотации. PreDestroy не найден. Но в моей внешней библиотеке есть библиотека java.xml.ws.annotation, которая включает в себя файл javax.annotation.
Место, которое он назвал, находится здесь.
/**
* Register a component with the lifecycle manager. The component will be torn down when the lifecycle manager
* is closed, using whatever teardown the lifecycle manager institutes.
*
* @param instance The component to register.
*/
public void registerComponent(Object instance) {
if (instance == null) {
return;
}
if (instance instanceof AutoCloseable) {
actions.add(new CloseAction((AutoCloseable) instance));
}
for (Method m: MethodUtils.getMethodsListWithAnnotation(instance.getClass(), PreDestroy.class)) {
actions.add(new PreDestroyAction(instance, m));
}
}
В настоящее время я использую intellij, и я попытался импортировать файл javax.annotation jar , но он не работал. Я также пытался поставить этот код
dependencies {
compileOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
compile group: 'org.jetbrains', name: 'annotations', version: '15.0'
}
но все равно не сработало.