Hi John,
>Can you help me with a few questions?
- I will try. Others may offer alternate or additional information.
> If I wanted to create a modified workflow without the entire source code,
> could I create a jar file of the module I wanted to modify and then replace
> that jar file in the User Install
- Yes.
In IntelliJ you should be able to open the Maven panel to handle this. If you
compiled with some other means, then in the top menubar View > Tool Windows >
Maven.
The maven panel should display a list (tree) of all of the ctakes modules. You
can build an individual module here. For instance, Apache cTAKES Dockhand >
Lifecycle > package. You will see some progress information in the run panel,
including:
[INFO] Building jar:
C:\Spiffy\ctakes_trunk\ctakes-dockhand\target\ctakes-dockhand-4.0.1-SNAPSHOT.jar
You just build a single module's jar - in this case the ctakes basic
installation gui. The location of your new jar file will be in a location on
your system.
>or would I need to compile the entire source code for cTAKES?
- No, but if you do ever want to build the entire module, use the maven panel,
Apache cTAKES (root) > Lifecycle > package.
>When I try to create a jar file within IntelliJ IDEA, it asks for the main
>class.
- It shouldn't do this if you use the maven package process as I outlined
above. If you still get a main class question then send me info on your
complete process and I'll see if I can duplicate it.
>or should I build a jar file for the modified module without a main class and
>then replace that in the lib/ folder of the User Install version of cTAKES?
- You should build one without specifying a main class and copy it to lib/ in
the User Install.
> when I try to run cTAKES, I receive the error:
The feature org.apache.ctakes.typesystem.type.textspan.List:items is declared
twice, with incompatible multipleReferencesAllowed specifications
- Is it an error that stops ctakes from running or is it just a warning?
The root of the problem is that different modules have copies of the type
system xml. This should be unnecessary and causes this problem if somebody
modifies properties in one but not another.
For Instance, in ctakes-type-sysstem TypeSystem.xml :
<featureDescription>
<name>items</name>
<description/>
<rangeTypeName>uima.cas.FSList</rangeTypeName>
<elementType>uima.tcas.Annotation</elementType>
<multipleReferencesAllowed>true</multipleReferencesAllowed>
</featureDescription>
While in others:
<featureDescription>
<name>items</name>
<description/>
<rangeTypeName>uima.cas.FSList</rangeTypeName>
<elementType>uima.tcas.Annotation</elementType>
</featureDescription>
This is essentially a bug that I am "fixing" right .. about .. now ...
>I haven’t made any modifications to how the type system is called, only in how
>a custom dictionary is accessed.
- Just out of curiosity, how did you change custom dictionary access? Maybe we
can add it to ctakes.
Sean
________________________________________
From: JOHN R CASKEY <[email protected]>
Sent: Wednesday, May 19, 2021 5:01 PM
To: [email protected]
Subject: Java Question [EXTERNAL]
* External Email - Caution *
Hello,
The cTAKES User Install is mostly sufficient for my lab, but I’ve found that I
need to modify a few of the modules. I downloaded the cTAKES source and can
successfully run workflows after updating the source code, but I’m having
trouble building the modified modules and essentially creating an updated User
Install of cTAKES from the source code. Can you help me with a few questions?
* I’m running IntelliJ IDEA, and I can compile the cTAKES source code with
build profiles like runPiperGui without problems to run cTAKES programmatically
or to start a GUI. I can also run essentially the same workflow in the User
Install version by running the bash helper script ‘runPiperFile.sh’. If I
wanted to create a modified workflow without the entire source code, could I
create a jar file of the module I wanted to modify, and then replace that jar
file in the User Install version, or would I need to compile the entire source
code for cTAKES?
* When I try to create a jar file within IntelliJ IDEA, it asks for the
main class. Would this be a class I create for the workflow I’m using, or
something else? For example, could I use
org.apache.ctakes.examples.pipeline.HelloWorldPiperRunner as a template to
build a customized main class that would run programmatically, or should I
build a jar file for the modified module without a main class and then replace
that in the lib/ folder of the User Install version of cTAKES?
* I can create a jar file of a module within IntelliJ IDEA and then replace
the modified jar file in the User Install version (for example, modifying
ctakes-dictionary-lookup-fast-4.0.0.1.jar and replacing it in the lib/ folder),
but when I try to run cTAKES, I receive the error:
The feature org.apache.ctakes.typesystem.type.textspan.List:items is declared
twice, with incompatible multipleReferencesAllowed specifications
I haven’t made any modifications to how the type system is called, only in how
a custom dictionary is accessed. Do you have any idea what could be causing
this error?
Thanks!
John Caskey