fadmaa / grefine-rdf-extension

An extension to Google Refine that enables graphical mapping of Google Refine project data to an RDF skeleton and then exporting it in RDF format
http://refine.deri.ie
Other
94 stars 55 forks source link

Extension missing com.ibm.icu package? #85

Open ralphlevan opened 10 years ago

ralphlevan commented 10 years ago

I'm working my way through the book Using OpenRefine and they use your RDF extension to connect to the LCSH sparql endpoint. When I ask OpenRefine to start reconciling at LCSH, I get the error "java.lang.NoClassDefFoundError: com/ibm/icu/text/StringPrepParseException".

I added icu4j-52_1.jar to OpenRefine/extensions/rdf-extension/MOD-INF/lib and that fixed that particular problem.

java.lang.NoClassDefFoundError: com/ibm/icu/text/StringPrepParseException at com.hp.hpl.jena.iri.impl.SchemeSpecification.(SchemeSpecification.java:68) at com.hp.hpl.jena.iri.ViolationCodes$Initialize.(ViolationCodes.java:1360) at com.hp.hpl.jena.iri.IRIFactory.(IRIFactory.java:111) at org.openjena.riot.system.PrefixMap.add(PrefixMap.java:54) at com.hp.hpl.jena.sparql.util.MappingRegistry.addPrefixMapping(MappingRegistry.java:33) at com.hp.hpl.jena.query.ARQ.init(ARQ.java:438) at com.hp.hpl.jena.query.ARQ.(ARQ.java:456) at com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.(QueryEngineHTTP.java:90) at com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.(QueryEngineHTTP.java:81) at org.deri.grefine.reconcile.rdf.executors.VirtuosoRemoteQueryExecutor.sparql(VirtuosoRemoteQueryExecutor.java:20) at org.deri.grefine.reconcile.rdf.endpoints.QueryEndpointImpl.reconcileEntities(QueryEndpointImpl.java:38) at org.deri.grefine.reconcile.rdf.RdfReconciliationService.reconcile(RdfReconciliationService.java:69) at org.deri.grefine.reconcile.model.AbstractReconciliationService.reconcile(AbstractReconciliationService.java:48) at org.deri.grefine.reconcile.ServiceRegistry.multiReconcile(ServiceRegistry.java:117) at org.deri.grefine.reconcile.GRefineServiceManager.multiReconcile(GRefineServiceManager.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161) at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247) at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76) at org.mozilla.javascript.gen.c2._c5(file:/C:/Users/levan/AppData/Roaming/OpenRefine/extensions/rdf-extension/MOD-INF/controller.js:204) at org.mozilla.javascript.gen.c2.call(file:/C:/Users/levan/AppData/Roaming/OpenRefine/extensions/rdf-extension/MOD-INF/controller.js) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065) at org.mozilla.javascript.gen.c2.call(file:/C:/Users/levan/AppData/Roaming/OpenRefine/extensions/rdf-extension/MOD-INF/controller.js) at edu.mit.simile.butterfly.ButterflyModuleImpl$Controller.process(ButterflyModuleImpl.java:399) at edu.mit.simile.butterfly.ButterflyModuleImpl$Controller.run(ButterflyModuleImpl.java:377) at org.mozilla.javascript.Context.call(Context.java:515) at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:507) at edu.mit.simile.butterfly.ButterflyModuleImpl.processScript(ButterflyModuleImpl.java:650) at edu.mit.simile.butterfly.ButterflyModuleImpl.process(ButterflyModuleImpl.java:427) at edu.mit.simile.butterfly.Butterfly.service(Butterfly.java:516) at com.google.refine.RefineServlet.service(RefineServlet.java:200) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81) at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:155) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722) Caused by: java.lang.ClassNotFoundException: com.ibm.icu.text.StringPrepParseException at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at edu.mit.simile.butterfly.ButterflyClassLoader.loadClass(ButterflyClassLoader.java:65) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 57 more

tfmorris commented 10 years ago

Sounds like the RDF extension was/is depending on Refine to distribute ICU4J. We did in 1.5, but dropped it in 1.6 to try and get the kits size under the 100MB limit imposed by Github.

Extensions should bundled their own dependencies to prevent issues with version skew and packaging changes like this. In this case it appears that it's actually a dependency of Jena which the RDF extension bundles.

kolen commented 9 years ago

Temporary workaround: download icu4j (http://site.icu-project.org/download, for 54: http://download.icu-project.org/files/icu4j/54.1.1/icu4j-54_1_1.jar) and put it into (workspace dir)/Extensions/rdf-extension/MOD-INF/lib/.

tfmorris commented 9 years ago

I believe the 0.9 alpha build addresses this issue and is OpenRefine 2.6 compatible.