Great. I believe the windows exe has a hard coded class path so ignores any additions.
/Andy

On 8 May 2017 at 13:24, kovacic <kovacic@dke.uni-linz.ac.at> wrote:

Thank you Andy. It works by starting the GUI using the basexgui.bat.

Regards
Ilko


Am 08.05.2017 um 14:21 schrieb Andy Bunce:
  1. download + unzip http://files.basex.org/releases/8.6.3/BaseX863.zip
  2. copy hello-test.jar to lib/
  3. run bin/basexgui.bat
  4. execute:
declare namespace t='org.basex.modules.Hello';
let $obj := t:new('works for me')
return t:hello($obj)

Regards
/Andy

On 8 May 2017 at 13:16, kovacic <kovacic@dke.uni-linz.ac.at> wrote:

Hi Andy,

I followed the instructions from here http://docs.basex.org/wiki/Repository#Java.

I copied the jar to the basex/lib/ folder but it still does not work. Which version of BaseX are you using?

Regards
Ilko


Am 08.05.2017 um 13:43 schrieb Andy Bunce:
​​Hi Ilko,

>The repo folder was completely empty.
So you want to install it in the repository, using repo install?

My test was installing via copying the jar to basex/lib/ where it works (for me).
If I use repo install I get the same problem as you.

This may be a bug/feature.
It is possible that using the full EXPath Packaging [1] xar would work although I have not tried it.
This would involve adding an XQuery file with expath-pkg.xml and basex.xml files to create a xar wrapping the jar, structured as here [2]
The issue [3] may be relevant.


On 8 May 2017 at 11:44, kovacic <kovacic@dke.uni-linz.ac.at> wrote:

Hi Andy,

I have removed all other existing modules before installing this module. The repo folder was completely empty.

Regards
Ilko


Am 05.05.2017 um 19:29 schrieb Andy Bunce:
Hi IIko

Your code and:

declare namespace t='org.basex.modules.Hello';
let $obj := t:new('works for me')
return t:hello($obj)

Returns:

Hello works for me

Could be be that you have multiple versions of the jar on the path?

Regards
/Andy

On 5 May 2017 at 11:20, kovacic <kovacic@dke.uni-linz.ac.at> wrote:
Hi all,

I am running BaseX 8.6.3 currently and struggling with the inclusion of modules written in Java. I have extended the Hello World example:

package org.basex.modules;

public class Hello {

    private String str = "BaseX";

    public Hello() {}

    public Hello(String str) {
        this.str = str;
    }

    public String hello(final String world) {
        return "Hello " + world;
    }

    public String hello() {
        return "Hello " + str;
    }
}

I can pack it into a jar-file and install it successfully. My jar-file is structured as following:

hello.jar
  - META-INF
    - MANIFEST.MF
  - org
    - basex
      - modules
        - Hello.class

Here is the content of my manifest.mf:

Manifest-Version: 1.0
Main-Class: org.basex.modules.Hello

The methods of the Hello-class can be called without any problems when the module is imported:

import module namespace t='org.basex.modules.Hello';

t:hello('text')

However, when I try to explicitly create the object by calling the constructor (new) with arguments it fails:

declare namespace t='org.basex.modules.Hello';

let $obj := t:new('test')

return ''

When I try to call the constructor I receive the error [XPST0017] Unknown function: Q{org.basex.modules.Hello}new.

Since I am able to execute the FileWriter example (http://docs.basex.org/wiki/Java_Bindings#Namespace_Declarations) which calls a constructor with an argument I would like to know if this behavior is a bug or if I am missing an important point.

Regards,
Ilko




--
Ilko Kovacic
Wissenschaftlicher Mitarbeiter
Institut für Wirtschaftsinformatik - Data & Knowledge Engineering

JOHANNES KEPLER
UNIVERSITÄT LINZ

Altenberger Straße 69
Science Park III, S3 111
4040 Linz, Österreich
T +43 732 2468 4286
ilko.kovacic@jku.at
www.dke.jku.at


--
Ilko Kovacic
Wissenschaftlicher Mitarbeiter
Institut für Wirtschaftsinformatik - Data & Knowledge Engineering

JOHANNES KEPLER
UNIVERSITÄT LINZ

Altenberger Straße 69
Science Park III, S3 111
4040 Linz, Österreich
T +43 732 2468 4286
ilko.kovacic@jku.at
www.dke.jku.at


--
Ilko Kovacic
Wissenschaftlicher Mitarbeiter
Institut für Wirtschaftsinformatik - Data & Knowledge Engineering

JOHANNES KEPLER
UNIVERSITÄT LINZ

Altenberger Straße 69
Science Park III, S3 111
4040 Linz, Österreich
T +43 732 2468 4286
ilko.kovacic@jku.at
www.dke.jku.at