Hi, I'd like to add that I am also experiencing this issue except with registering custom property functions with Fuseki main server. The module is added to the classpath when I start Fuseki Server, and I load the class in the global assembler config.ttl file.
[] rdf:type fuseki:Server ; ja:loadClass "com.example.jena.myFunc" ; . With my custom property function, Fuseki used to previously call the static void init method on my class. But now, it no longer calls it and I can't register the custom property function with my own IRI. class getParts : PFuncSimpleAndList() { companion object { @JvmStatic fun init() { println("Initializing getParts property function") // Register the property function with the IRI PropertyFunctionRegistry.get().put( "https://linked.data.gov.au/def/cn/func/getParts", GetPartsPropertyFunctionFactory(), ) } } The above is in Kotlin, but hopefully you get the idea. Note that I can still use the custom property function in my SPARQL queries if I use the <java:...> syntax but I'd prefer it if I can continue to use the init hook to register my function with an IRI. Cheers, Edmond On Monday, 10 February 2025 at 03:12, Andy Seaborne <a...@apache.org> wrote: > Hi Mikhail, > > There wasn't an intentional change but there has been a signficant > amount of change in the area. > > I have a question below: > > > On 08/02/2025 17:39, Mikhail Komyshev wrote: > > > Hi! > > > > I have an application that uses Fuseki Main server and tried updating > > the jena-fuseki-server-X.X.X.jar binary from 5.2.0 to 5.3.0 from 1. > > But from some reason, auto modules stopped loading. > > > > Unfortuantely, I haven't found any notices about changes in this regard. > > Sorry if I missed something. Did the behaviour change or is this a bug? > > > > The minimal example is as follows (suppose compiled against > > org.apache.jena/jena-fuseki-main from Maven version 5.3.0): > > ``` > > package com.example; > > > > import java.util.Set; > > import org.apache.jena.rdf.model.Model; > > import org.apache.jena.fuseki.main.sys.FusekiAutoModule; > > import org.apache.jena.fuseki.main.FusekiServer; > > > > public class MyModule implements FusekiAutoModule { > > public MyModule() {} > > > > public String name() { > > return "My Module"; > > } > > > > public void prepare( > > FusekiServer.Builder builder, > > Set<String> datasetNames, > > Model configModel > > ) { > > System.out.println("Hello world!"); > > } > > } > > ``` > > > > Then, in the file `META-INF/services/ > > org.apache.jena.fuseki.main.sys.FusekiAutoModule` on the classpath, you > > put this line: > > `com.example.MyModule` > > > > When running the following shell command, you can see the info message > > about the module being loaded and the Hello world message in the > > standard output: > > `java -cp jena-fuseki-server-5.2.0.jar:src/java:resources \\ > > org.apache.jena.fuseki.main.cmds.FusekiMainCmd --mem --modules=true \\ > > '/test'` > > > How is the file com/example/MyModule.class getting onto the classpath? > > > Yet, running the same command with the 5.3.0 binary doesn't seem to load > > the module and therefore doesn't produce the two messages. > > > > Thanks in advance! > > > > server/5.3.0/jena-fuseki-server-5.3.0.jar > > > > Cheers, > > Mikhail