Hi Christian,

It would be nice if the exe could pick up added jars but I have got so used to the behavior that I always use basexgui.bat now.
In fact I have modified the bat to add a "lib2" folder where I can easier manage extension jars.

set CP=%MAIN%/BaseX.jar;%MAIN%/lib/*;%MAIN%/lib2/*

But is the original problem a bug?
That is after installing the jar via REPO install t:new("aaa") fails although it works when added to lib/

/Andy




On 11 May 2017 at 19:13, Christian Grün <christian.gruen@gmail.com> wrote:
Hi Andy,

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

​Oh yes, that’s true. There have been several versions of BaseX.exe in the past, all with specific advantages and drawbacks. We may need to rethink the way how we build the Windows executable.

Thanks for the reminder,
Christian




 
/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