UIMA Ruta, uimaFIT and DKPro: Which versions work together? - eclipse

In the GSCL 2013 Ruta tutorial the versions of the components in the pom.xml are:
uimaj-core: 2.4.2
DKPro components: 1.5.0
ruta-core: 2.1.0
Now, I incremented the version numbers incrementally and found that version 1.8.0 of the DKPro components introduces the following exception:
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.uima.cas.text.AnnotationIndex.withSnapshotIterators()Lorg/apache/uima/cas/FSIndex;
at org.apache.uima.fit.util.FSCollectionFactory$AnnotationIndexAdapter.iterator(FSCollectionFactory.java:821)
at de.tudarmstadt.ukp.dkpro.core.api.segmentation.SegmenterBase.process(SegmenterBase.java:145)
at org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:378)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:298)
at org.apache.uima.analysis_engine.asb.impl.ASB_impl$AggregateCasIterator.processUntilNextOutputCas(ASB_impl.java:568)
at org.apache.uima.analysis_engine.asb.impl.ASB_impl$AggregateCasIterator.<init>(ASB_impl.java:410)
at org.apache.uima.analysis_engine.asb.impl.ASB_impl.process(ASB_impl.java:343)
at org.apache.uima.analysis_engine.impl.AggregateAnalysisEngine_impl.processAndOutputNewCASes(AggregateAnalysisEngine_impl.java:265)
at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.process(AnalysisEngineImplBase.java:267)
at org.apache.uima.fit.pipeline.SimplePipeline.runPipeline(SimplePipeline.java:150)
at de.tudarmstadt.ukp.tutorial.gscl2013.ruta.WhatAliceDoesExample.main(WhatAliceDoesExample.java:38)
In the last days I faced other version problems (see this question) with these components.
Can someone tell me what the most current versions of these components are that work together? Or maybe someone can give me his/her versions that he/she currently works with? I am also interested in the used eclipse version. Thank you very much. I am stuck with this issue for some time now.

Irrespective which version of DKPro Core or Ruta you use, it is a good idea to use a recent UIMA and uimaFIT version.
Note that there was an incompatible change with UIMA v3+ (uimaFIT v3+). E.g. DKPro Core 2.0.0 works with these new versions, but DKPro Core 1.x works only with UIMA v2 and uimaFIT v2. Presently (2019-10-26), there is no Ruta version compatible with UIMA v3.
Check the POM files of DKPro Core and Ruta which versions of UIMA and uimaFIT they use.
DKPro Core 2.0.0 ->
<uima.version>3.1.0</uima.version>
<uimafit.version>3.0.0</uimafit.version>
DKPro Core 1.11.0 (note change in group ID in this version) ->
<uima.version>2.10.3</uima.version>
<uimafit.version>2.4.0</uimafit.version>
DKPro Core 1.10.0 ->
<uima.version>2.10.2</uima.version>
<uimafit.version>2.4.0</uimafit.version>
DKPro Core 1.8.0 ->
<uima.version>2.8.1</uima.version>
<uimafit.version>2.2.0</uimafit.version>
Ruta 2.7.0
<uimaVersion>2.10.3</uimaVersion>
<uimafit-version>2.4.0</uimafit-version>
As for Eclipse: I'd just use the most recent version. If you experience trouble with Ruta in the latest Eclipse versions, best report it on the UIMA users' mailing list.

Related

What scala-library dependenecy version can be used with Gradle 7.2 for Gatling performance testing

I am trying to do performance testing for my API using Gatling and Scala.
Below are the plugins/libraries I am using
gradle version : 7.2
gradle.plugin.com.github.lkishalmi.gatling:gradle-gatling-plugin:3.3.0
dependency : gatling 'org.scala-lang:scala-library:2.13.10'
I get the below error when I try to resolve dependencies
A problem occurred evaluating project ':performance-test'.
> Could not find method compile() for arguments [org.scala-lang:scala-library:2.13.10] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
My guess is that the scala version 2.13.10 is not compatible with the gradle version 7.2. I tried changing the scala version to latest and many others, but nothing seems to work.
I have also seen another project using gradle 6.6 and scala version 2.12.2 which works. In my case I can't downgrade the gradle version, unfortunately.
Does anyone know what scala version is compatible with gradle 7.2?
The com.github.lkishalmi.gatling:gradle-gatling-plugin plugin has been deprecated for a long time. Please use the official plugin: https://gatling.io/docs/gatling/reference/current/extensions/gradle_plugin/

UIMA Ruta version 3.1.0

I've upgraded the Uima Ruta version to 3.1.0 in Ruta Workbench.
I tried with normal Ruta project its working fine but while convert into maven project i'm getting below error.
Exception in thread "main" org.apache.uima.analysis_engine.AnalysisEngineProcessException: The JCAS cover class "org.apache.uima.ruta.type.TokenSeed_Type" could not be loaded.
at org.apache.uima.ruta.engine.RutaEngine.seedAnnotations(RutaEngine.java:947)
at org.apache.uima.ruta.engine.RutaEngine.initializeStream(RutaEngine.java:906)
at org.apache.uima.ruta.engine.RutaEngine.process(RutaEngine.java:692)
at org.apache.uima.analysis_component.JCasAnnotator_ImplBase.process(JCasAnnotator_ImplBase.java:48)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.callAnalysisComponentProcess(PrimitiveAnalysisEngine_impl.java:401)
at org.apache.uima.analysis_engine.impl.PrimitiveAnalysisEngine_impl.processAndOutputNewCASes(PrimitiveAnalysisEngine_impl.java:318)
at org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase.process(AnalysisEngineImplBase.java:269)
at org.apache.uima.ruta.ide.launching.RutaLauncher.processFile(RutaLauncher.java:242)
at org.apache.uima.ruta.ide.launching.RutaLauncher.main(RutaLauncher.java:191)
Caused by: org.apache.uima.cas.CASRuntimeException: The JCAS cover class "org.apache.uima.ruta.type.TokenSeed_Type" could not be loaded.
at org.apache.uima.jcas.impl.JCasImpl.getTypeInit(JCasImpl.java:461)
at org.apache.uima.jcas.impl.JCasImpl.getType(JCasImpl.java:425)
at org.apache.uima.jcas.impl.JCasImpl.getCasType(JCasImpl.java:478)
at org.apache.uima.jcas.impl.JCasImpl.getAnnotationIndex(JCasImpl.java:1634)
at org.apache.uima.ruta.seed.TextSeeder.seed(TextSeeder.java:43)
at org.apache.uima.ruta.engine.RutaEngine.seedAnnotations(RutaEngine.java:945)
... 8 more
**Note:**I'm using Eclipse version 2019-09 and java 1.8.
Thanks in advance
ScreenShot FYI:
I assume that there are two different versions of UIMA Ruta involved.
One version is the version of the Ruta Workbench as seen in the screenshot in the question.
When you run a Ruta script/analysis engine in maven context, then the classpath of the maven dependencies is the relevant one. This means that you are somewhat independent of the installed plugins if you develop a UIMA/Ruta based maven project.
In your case, I assume that there is an old ruta version in the maven dependencies. Or there are several and the old one wins.

Error while including casbah dependencies

I am facing problem in getting started with casabah to integrate scala and mongoDb. I am using Spring Tool Suite(STS) and imported the following jar files :
spring-data-mongodb-1.6.0.RELEASE.jar
com.mongodb.jar
casbah-commons_2.10-2.7.2.jar
casbah-query_2.10-2.7.2.jar
joda-time-2.1.jar
slf4j-api-1.7.7.jar
casbah-gridfs_2.10-2.5.0.jar
scalaj-collection_2.10-1.4.jar
slf4j-simple-1.7.7.jar
casbah-core_2.10-2.7.2.jar
mongo-2.10.0.jar
mongo-java-driver-2.10.0.jar
However, I get an error.
Error:Description Resource Path Location Type bad symbolic reference. A signature in Implicits.class refers to type Cursor in package com.mongodb which is not available. It may be completely missing from the current classpath, or the version on the classpath might be incompatible with the version used when compiling Implicits.class.
I read a couple of posts that says the problem is with the version in mongo-java-driver so i tried with mongo-java-driver-2.10.1.jar as well , But it was still giving me an error.
Could someone please help me resolve this error??
Thanks a lot in advance!!!
It looks like its a dependency issue. Casbah is built upon a fixed version of the Mongo Java driver so is reliant on a specific binary compatible version.
The Casbah version numbers should all be the same - above you mainly have Casbah 2.7.2 but the gridfs version is wrong: casbah-gridfs_2.10-2.5.0.jar.
Also, Casbah 2.7.2 relies on version 2.12.2 of the Mongo Java Driver, however, the latest version of Casbah is 2.7.3 which relies on version 2.12.3 of the Mongo Java Driver.
To make this simpler there is a all dependencies jar for Casbah that includes the latest version of the java driver and all the other relevant dependencies. Alternatively, the pom file should point all dependent packages which declare their dependencies. (As Casbah is split into sub packages the casbah-commons pom has all the external dependencies listed).

grails groovy version issue

I have a grails application with 2.4.1 grails version and used 2.3 groovy compiler.
I am getting following error when I try to run
java.lang.NoSuchMethodError: org.codehaus.groovy.runtime.DefaultGroovyMethods.count(Ljava/lang/Iterable;Lgroovy/lang/Closure;)Ljava/lang/Number;
at org.codehaus.groovy.grails.compiler.web.ControllerActionTransformer.processMethods(ControllerActionTransformer.java:234)
at org.codehaus.groovy.grails.compiler.web.ControllerActionTransformer.performInjectionOnAnnotatedClass(ControllerActionTransformer.java:204)
at org.codehaus.groovy.grails.compiler.web.ControllerActionTransformer.performInjection(ControllerActionTransformer.java:196)
at org.codehaus.groovy.grails.compiler.injection.GrailsAwareInjectionOperation.call(GrailsAwareInjectionOperation.java:154)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1213)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:645)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:623)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:600)
at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.processToPhase(GroovyCompilationUnitDeclaration.java:185)
at org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.analyseCode(GroovyCompilationUnitDeclaration.java:2213)
at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:834)
at org.eclipse.jdt.internal.compiler.ProcessTaskManager.run(ProcessTaskManager.java:137)
at java.lang.Thread.run(Thread.java:701)
Grails 2.4.1 shipped with Groovy 2.3.3 and that is the only version of Groovy supported with that version of Grails. Normally you don't do anything to associate a version of Groovy with a version of Grails. Grails uses the version that is shipped with it.
Make sure that your GRAILS_HOME points to Grails 2.4.1 and that GRAILS_HOME/bin is on your PATH. If you have a different version of Grails on your PATH than the one that GRAILS_HOME points to, that can sometimes cause peculiar behavior.
I hope that helps.

GWT upgrade from 2.1 to 2.4

while compiling from GWT 2.1 to 2.4, the following error is shown:
Found interface com.google.gwt.core.ext.typeinfo.JClassType, but class was expected
so kindly provide me with the solution to this issue.
There's a binary backwards-incompatibility in GWT 2.2 (where com.google.gwt.core.ext.typeinfo.JClassType et al. were changed from classes to interfaces). You have to update your third-party dependencies with ones that have been compiled against the GWT 2.2 SDK or a newer version; for your own library or if the third-party lib has been somewhat abandoned, you'll have to recompile it (javac).
GIN for example provides 2 builds of its 1.5 release: one compatible with GWT 2.1.1 and older, and one compatible with 2.2 onwards (there are two distinct JARs in the gwt-1.5.zip download).