Получение NoClassDefFoundError при прохождении учебного пособия Пример разрешений Jena - PullRequest
0 голосов
/ 01 октября 2018

Я попытался пройти пример учебного пособия, чтобы добавить разрешения для Apache Jena, используя Fuseki, следующим образом: https://jena.apache.org/documentation/permissions/example.html

После выполнения всех шагов при повторном запуске сервера с fuseki-server -config=run/config.ttl Я получаю следующее сообщение об ошибке Java:

saphieron@plantlogger:~/semantic/apache-jena-fuseki-3.8.0 $ ./fuseki-server -config=run/config.ttl
    [2018-10-01 21:26:49] Server     INFO  Apache Jena Fuseki 3.8.0
    [2018-10-01 21:26:50] Config     INFO  FUSEKI_HOME=/home/saphieron/semantic/apache-jena-fuseki-3.8.0
    [2018-10-01 21:26:50] Config     INFO  FUSEKI_BASE=/home/saphieron/semantic/apache-jena-fuseki-3.8.0/run
    [2018-10-01 21:26:50] Config     INFO  Shiro file: file:///home/saphieron/semantic/apache-jena-fuseki-3.8.0/run/shiro.ini
    [2018-10-01 21:26:52] Config     INFO  Configuration file: run/config.ttl
    [2018-10-01 21:26:56] Server     ERROR Exception in initialization: org/apache/commons/collections4/map/LRUMap
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/map/LRUMap
            at org.apache.jena.permissions.impl.SecuredItemImpl.incrementUse(SecuredItemImpl.java:210)
            at org.apache.jena.permissions.impl.SecuredItemInvoker.invoke(SecuredItemInvoker.java:117)
            at com.sun.proxy.$Proxy1.getGraph(Unknown Source)
            at org.apache.jena.sparql.core.DatasetImpl.<init>(DatasetImpl.java:67)
            at org.apache.jena.query.DatasetFactory.create(DatasetFactory.java:124)
            at org.apache.jena.sparql.core.assembler.DatasetAssembler.createDataset(DatasetAssembler.java:60)
            at org.apache.jena.sparql.core.assembler.DatasetAssembler.open(DatasetAssembler.java:43)
            at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.openBySpecificType(AssemblerGroup.java:157)
            at org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup.open(AssemblerGroup.java:144)
            at org.apache.jena.assembler.assemblers.AssemblerGroup$ExpandingAssemblerGroup.open(AssemblerGroup.java:93)
            at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:39)
            at org.apache.jena.assembler.assemblers.AssemblerBase.open(AssemblerBase.java:35)
            at org.apache.jena.fuseki.build.FusekiBuilder.getDataset(FusekiBuilder.java:120)
            at org.apache.jena.fuseki.build.FusekiBuilder.buildDataServiceCustom(FusekiBuilder.java:73)
            at org.apache.jena.fuseki.build.FusekiBuilder.buildDataAccessPoint(FusekiBuilder.java:65)
            at org.apache.jena.fuseki.build.FusekiConfig.servicesAndDatasets(FusekiConfig.java:121)
            at org.apache.jena.fuseki.server.FusekiSystem.processServerConfigFile(FusekiSystem.java:266)
            at org.apache.jena.fuseki.server.FusekiSystem.initServerConfiguration(FusekiSystem.java:237)
            at org.apache.jena.fuseki.server.FusekiSystem.initializeDataAccessPoints(FusekiSystem.java:207)
            at org.apache.jena.fuseki.server.FusekiServerListener.serverInitialization(FusekiServerListener.java:96)
            at org.apache.jena.fuseki.server.FusekiServerListener.contextInitialized(FusekiServerListener.java:53)
            at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:890)
            at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:532)
            at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:853)
            at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:344)
            at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1514)
            at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1476)
            at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:785)
            at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261)
            at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:545)
            at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
            at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
            at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:105)
            at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
            at org.eclipse.jetty.server.handler.gzip.GzipHandler.doStart(GzipHandler.java:273)
            at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
            at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
            at org.eclipse.jetty.server.Server.start(Server.java:449)
            at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:105)
            at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
            at org.eclipse.jetty.server.Server.doStart(Server.java:416)
            at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
            at org.apache.jena.fuseki.jetty.JettyFuseki.start(JettyFuseki.java:137)
            at org.apache.jena.fuseki.cmd.FusekiCmd.runFuseki(FusekiCmd.java:372)
            at org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.exec(FusekiCmd.java:356)
            at jena.cmd.CmdMain.mainMethod(CmdMain.java:93)
            at jena.cmd.CmdMain.mainRun(CmdMain.java:58)
            at jena.cmd.CmdMain.mainRun(CmdMain.java:45)
            at org.apache.jena.fuseki.cmd.FusekiCmd$FusekiCmdInner.innerMain(FusekiCmd.java:104)
            at org.apache.jena.fuseki.cmd.FusekiCmd.main(FusekiCmd.java:67)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.map.LRUMap
            at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
            ... 50 more

Кажется, что веб-интерфейс загружен, но на самом деле ничего, кроме index.html, кажется, не доступно.Мой вопрос главным образом заключается в том, должно ли это произойти, или если это NoClassDefFoundError должно произойти при следовании руководству.Я ожидал какого-то диалогового окна user / pw и не смог получить доступ к каким-либо данным с конечной точки.Теперь, поскольку я не получаю никакой информации о том, произошел ли сбой доступа, потому что я не аутентифицировал себя или сервер никогда не запускался должным образом, я не уверен, как продолжить отсюда.

Попробовал это с:

  • Джена Фусеки 3.8.0
  • commons-collection4-4.2
  • jena-permissions-3.8.0.jar
  • jena-permissions-3.8.0-example.jar
  • Java-версия "1.8.0_65"

1 Ответ

0 голосов
/ 01 октября 2018

Ваша JVM не может найти класс LRUMap, который является частью Apache Commons Collections v4 .Пожалуйста, дважды проверьте шаги, которые упоминают эту библиотеку:

Загрузите Apache Commons Collections v4 http://commons.apache.org/proper/commons-collections/download_collections.cgi Разархивируйте commons-collection * .jar в каталог Fuseki Home.

И в Linux / Unix ...

изменить MyCode.jar на permissions.jar: example.jar: commons-collection * .jar

Или, если вы используете Windows ...

Измените MyCustomCode.jar на permissions.jar; example.jar; commons-collection * .jar

Примечание : вам следует заменить * в строках вышес номером версии.Поэтому вы должны использовать commons-collections4-4.2.jar вместо

permissions.jar:example.jar:commons-collections4-4.2.jar

или

permissions.jar;example.jar;commons-collections4-4.2.jar
...