Hi Christian,

I'm not seeing any exceptions in the console window, even when enabling the
debug setting. I'm using the AdoptOpenJDK 1.8. I also have AdoptOpenJDK 11,
but I assume that will have the issue you described.

It's a custom-built jar using Kotlin, built via gradle.

One thing that it could be is that I'm using Kotlin objects (not classes),
e.g.:

    package test
    object Test { fun f(): String = "test" }

and using it like:

    declare namespace Test = "java:test.Test";

    declare function test:f() as xs:string {
        Test::f(Test::INSTANCE())
    };

The build.gradle file is simple. It looks something like this (removing
things like the junit configuration):

-----
buildscript {
    ext.kotlin_version = "1.4.32"
    ext.kotlin_stdlib = "kotlin-stdlib"
    ext.java_version = "1.8"

    repositories { mavenCentral() }
    dependencies { classpath
"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }
}

apply plugin: 'kotlin'

repositories {
    mavenCentral()
    mavenLocal()
}

compileKotlin { kotlinOptions { jvmTarget = java_version } }
compileTestKotlin { kotlinOptions { jvmTarget = java_version } }

dependencies {
    implementation "org.jetbrains.kotlin:$kotlin_stdlib:$kotlin_version"
}
-----

You'll need to copy the kotlin-stdlib-1.4.32.jar file in addition to the
test.jar file to BaseX's lib directory.

Kind regards,
Reece

On Fri, 30 Apr 2021 at 07:48, Christian Grün <christian.gr...@gmail.com>
wrote:

> Hi Reece,
>
> I’m sorry to hear that. Did you build a custom JAR file, or do you
> encounter problems with the JDK?
>
> Cheers,
> Christian
>
>
>
> On Thu, Apr 29, 2021 at 9:48 PM Reece Dunn <mscl...@googlemail.com> wrote:
> >
> > Hi Christian,
> >
> > Thanks for the response. Unfortunately, I've not been able to get the
> reloading working.
> >
> > Kind regards,
> > Reece
> >
> > On Wed, 21 Apr 2021 at 18:49, Christian Grün <christian.gr...@gmail.com>
> wrote:
> >>
> >> Hi Reece,
> >>
> >> If you install your Java code as JAR file in the repository [1], the
> >> code will be loaded and unloaded every time when your query is
> >> executed. If you get an error message…
> >>
> >>   java.lang.reflect.InaccessibleObjectException: Unable to make field
> >> private final jdk.internal.loader.URLClassPath
> >> java.net.URLClassLoader.ucp accessible: module java.base does not
> >> "opens java.net" to unnamed module @79e2c065
> >>
> >> …unloading fails [2], as you’re probably using a more recent version
> >> of the JDK, which restricts reflective access to internal variables.
> >> You can get around this by adding Java flags at startup time:
> >>
> >>  --add-opens java.base/java.net=ALL-UNNAMED
> >>  --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
> >>
> >> Maybe there are better solutions to unload JAR files today.
> >> Suggestions are welcome!
> >>
> >> Hope this helps,
> >> Christian
> >>
> >> [1] https://docs.basex.org/wiki/Repository#Java
> >> [2]
> https://github.com/BaseXdb/basex/blob/master/basex-core/src/main/java/org/basex/util/JarLoader.java#L34
> >>
> >>
> >>
> >> On Tue, Apr 20, 2021 at 6:44 PM Reece Dunn <mscl...@googlemail.com>
> wrote:
> >> >
> >> > Hi all,
> >> >
> >> > I'm working on a Java class that I'm importing into an XQuery, so I
> can do additional processing on the data that isn't easily expressible in
> XQuery (or XSLT). In order to get BaseX to pick up a modified version of
> the jar file I'm building, I'm restarting the BaseX http server.
> >> >
> >> > This makes it slower to turn around testing the changes. Is there a
> better way of doing this?
> >> >
> >> > Kind regards,
> >> > Reece
>

Reply via email to