The Altair Community is migrating to a new platform to provide a better experience for you. In preparation for the migration, the Altair Community is on read-only mode from October 28 - November 6, 2024. Technical support via cases will continue to work as is. For any urgent requests from Students/Faculty members, please submit the form linked here

Problem compiling new RapidMiner class (added to main RapidMiner project)

GhostriderGhostrider Member Posts: 60 Contributor II
edited November 2018 in Help
I want event (update) listeners on my ExampleSets.  I want to log / process real-time data in RM and I think the best way to do this is to add an EventUpdateListener to ExampleSet which then registers the event listener with the underlying MemoryTable.  Whenever MemoryTable add or remove methods are called, MemoryTable notifies the registered listener objects.  In order to do this, I had to create an EventListener interface which I put in the path: com.rapidminer.example.table.TableUpdateListener.

When I run the RM_Extension compile script which came with the developer guide, I get this error:

Buildfile: /home/boxer/workspace/RM_Extension/build.xml
clean:
    [echo] Cleaning...
  [delete] Deleting directory /home/boxer/workspace/RM_Extension/build
  [delete] Deleting directory /home/boxer/workspace/RM_Extension/javadoc
    [mkdir] Created dir: /home/boxer/workspace/RM_Extension/build
    [mkdir] Created dir: /home/boxer/workspace/RM_Extension/javadoc
version.get:
version.updateFiles:
init.setEncoding:
init:
init.setEncoding:
Trying to override old definition of task get
Trying to override old definition of task post
copy-resources:
    [echo] Copying resources...
    [copy] Copying 11 files to /home/boxer/workspace/RM_Extension/build
build:
Trying to override old definition of task post
build.rm:
Trying to override old definition of task post
build.dependent:
    [echo] RapidMiner Extension: Compile with Java from dir: /usr/lib/jvm/java-6-sun-1.6.0.20/jre
    [echo] RapidMiner Extension: using Java version: 1.6.0_20
    [javac] Compiling 310 source files to /home/boxer/workspace/RM_Extension/build
    [javac] warning: [path] bad path element "/home/boxer/workspace/RapidMiner_Vega/lib/jdbc/jcifs.jar": no such file or directory
    [javac] /home/boxer/workspace/RM_Extension/src/com/rapidminer/operator/realtime/debug/Receiver.java:7: cannot find symbol
    [javac] symbol  : class TableUpdateListener
    [javac] location: package com.rapidminer.example.table
    [javac] import com.rapidminer.example.table.TableUpdateListener;
    [javac]                                    ^
What do I need to do to fix this?  Seems that the extension does not use the source directories, but rather links to libraries.  I'd like to avoid the RM_Extension build script if possible.  I don't plan to redistribute these operators and it's annoying to have to recompile / bundle JAR files every time I make a change.  Is there a way I can just simply have them compiled into the main RM project?  Also, does RM have a table event update listener built-in already for ExampleSet that I missed?  I know RM is not really intended for real-time processing (or at least I assume as my previous question about RM real-time application went unanswered), but it seems like it would be easy to extend it for that purpose.
Tagged:

Answers

  • landland RapidMiner Certified Analyst, RapidMiner Certified Expert, Member Posts: 2,531 Unicorn
    Hi,
    you are correct. You need to recompile the RapidMiner.jar by using the ant call createJar of build.xml in rapidMiner directory.
    I already have it on my list to avoid this, but I'm not sure if this is possible at all.

    In general RapidMiner is not designed for real time processing. There are no mechanisms for scheduling or deadline awareness, not even of time constraints. If you can go without that, you are just fine.

    I'm not familiar with your problem, but I'm not sure if a listener on memory table change will do you any good. It might be called very often and many operators (even some you would not expect) will create a new memory table and then there are no listeners registered. In fact a memory table is a very low level class and subject to change in the next releases, so normally I would discourage the usage if avoidable.

    I would be very keen to hear about your progress in that matter since real time processing is of course of interest for us as well. Do you already have setup a project somewhere? By the way, you are aware that it has to be published under AGPL3 or compatible?

    Greetings,
      Sebastian
Sign In or Register to comment.