RapidMiner uses older library than extension

HeikoPaulheimHeikoPaulheim Member Posts: 13 Contributor II
edited July 2019 in Help
Hi,

I am developing an extension that Encog, version 3.2.0. In RapidMiner_Unuk, some older version of Encog is used, so when I run my extension, it says:
SEVERE: Process failed: org.encog.neural.networks.layers.BasicLayer.<init>(Lorg/encog/engine/network/activation/ActivationFunction;ZI)V
java.lang.NoSuchMethodError: org.encog.neural.networks.layers.BasicLayer.<init>(Lorg/encog/engine/network/activation/ActivationFunction;ZI)V
Removing encog.jar from RapidMiner_Unuk resolves the problem, but that is of course not an option.

Is there any way of making my extension using exactly the libraries it comes with?

Thank you,
Heiko

Answers

  • Marco_BoeckMarco_Boeck Administrator, Moderator, Employee, Member, University Professor Posts: 1,993 RM Engineering
    Hi,

    I'm afraid this is not possible. The main classloader will grab the RapidMiner Studio library first and that's that for your extension :-\

    Regards,
    Marco
  • HeikoPaulheimHeikoPaulheim Member Posts: 13 Contributor II
    Hi all,

    just for the records, if anyone else runs into that problem. What solved the issue for me was:
    • get the source code of the library
    • refactor the package names, e.g., from org.encog.* to org.encogx.*
    • package a JAR with the refactored package names and use that one in the extension
    A more than dirty hack, but it works.  ;)

    Best,
    Heiko
  • Marco_BoeckMarco_Boeck Administrator, Moderator, Employee, Member, University Professor Posts: 1,993 RM Engineering
    Hi,

    clever! However please make sure the license of the product in question actually allows such things if you ever want to make your extension publicly available.

    Regards,
    Marco
  • Marco_BoeckMarco_Boeck Administrator, Moderator, Employee, Member, University Professor Posts: 1,993 RM Engineering
    Hi,

    after some investigation there would be a way to fix that. Studio uses the default "loadClass()" implementation from ClassLoader. Which tries to load from the root classloader first (i.e. the main classloader instead of the plugin one). We have created an internal issue to fix that.

    Regards,
    Marco
  • JollyJolly Member Posts: 11 Contributor II
    R-extension id installed but when i open rapidminer it ask for the r-extension file and jri file for R-extension
Sign In or Register to comment.