Nashorn + Spring Boot; help appreciated

Attila Szegedi szegedia at gmail.com
Sun Dec 13 17:34:56 UTC 2020


Thanks Remi, although I don’t think that’s it.

To wit, if I write a minimal executable example:

---
import javax.script.*;

public class X {
    public static void main(String[] args) throws ScriptException {
	ScriptEngineManager factory = new ScriptEngineManager(); 
	ScriptEngine engine = factory.getEngineByName("nashorn"); 
	engine.eval("print('Hello, World!');");
    }
}
---

then run it with from my Nashorn project directory after it downloaded dependencies and built the JAR (so they’re in the directories named on the command line):

$ java --module-path build/nashorn/dependencies:build/nashorn/dist X.java

it works, so seemingly service discovery is just fine with only the declaration in module-info.java.

 
Further, in my test app on GitHub I even switched to using NashornScriptEngineFactory directly, so that it doesn’t rely on the service discovery mechanism, and then it fails with:

java.lang.IllegalArgumentException: Null module name
	at java.base/jdk.internal.module.Checks.requireModuleName(Checks.java:46) ~[na:na]
	at java.base/java.lang.module.ModuleDescriptor$Builder.requires(ModuleDescriptor.java:1646) ~[na:na]
	at java.base/java.lang.module.ModuleDescriptor$Builder.requires(ModuleDescriptor.java:1667) ~[na:na]
	at org.openjdk.nashorn.internal.runtime.StructureLoader.createModule(StructureLoader.java:68) ~[nashorn-core-15.0.jar:na]
	...

which is further evidence that Spring Boot is not loading Nashorn as a JPMS module.

Attila.


> On 2020. Dec 13., at 18:07, Remi Forax <forax at univ-mlv.fr> wrote:
> 
> Hi Attila,
> for compatibility, you have to both use the new module-info descriptor and the old META-INFO/services when you declare a service.
> 
> It's a shame that jar doesn't do that by itself, it was something we (module/jigsaw EG) discussed but it was never implemented.
> 
> regards,
> Rémi
> 
> ----- Mail original -----
>> De: "Attila Szegedi" <szegedia at gmail.com>
>> À: "nashorn-dev" <nashorn-dev at openjdk.java.net>
>> Envoyé: Dimanche 13 Décembre 2020 17:54:06
>> Objet: Nashorn + Spring Boot; help appreciated
> 
>> Hey folks,
>> 
>> seems like folks are trying to use standalone Nashorn with Spring Boot, and are
>> running into an issue where Boot doesn’t load Nashorn as a JPMS module. If
>> anyone has expertise with this (Spring Boot loading app dependencies as JPMS
>> modules) and can help it’d be most appreciated.
>> 
>> I outlined the problem (and I even have a very small reproducer Boot app) in a
>> comment on Stack Overflow[0], if you want to help, you’ll find the details
>> there.
>> 
>> Thank you,
>> Attila.
>> 
>> [0]
>> https://stackoverflow.com/questions/65265629/how-to-use-nashorn-in-java-15-or-later/65278158#65278158



More information about the nashorn-dev mailing list