B4J Question (solved) jinjava - java.lang.IllegalArgumentException: object is not an instance of declaring class

aeric

Expert
Licensed User
Longtime User
jinjava
Jinja template engine for Java
https://github.com/HubSpot/jinjava

Java:
Jinjava jinjava = new Jinjava();
Map<String, Object> context = Maps.newHashMap();
context.put("name", "Jared");

String template = Resources.toString(Resources.getResource("my-template.html"), Charsets.UTF_8);

String renderedTemplate = jinjava.render(template, context);

My B4J attempt:
B4X:
'Non-UI application (console / server application)
#Region Project Attributes
    #CommandLineArgs:
    #MergeLibraries: True
#End Region
#AdditionalJar: jinjava-2.7.3
Sub Process_Globals
   
End Sub

Sub AppStart (Args() As String)
    Dim Jinjava As JavaObject
    Jinjava.InitializeStatic("com.hubspot.jinjava.Jinjava")
    Dim context As JavaObject
    context.InitializeNewInstance("java.util.HashMap", Null)
    context.RunMethod("put", Array("name", "B4X"))
    Dim template As String = File.ReadString(File.DirAssets, "template.html")
    Dim renderedTemplate As String = Jinjava.RunMethod("render", Array(template, context))
    Log(renderedTemplate)
End Sub

Maven: https://repo1.maven.org/maven2/com/hubspot/jinjava/jinjava/2.7.3/jinjava-2.7.3.jar

I am getting the error:
B4X:
Waiting for debugger to connect...
Program started.
Error occurred on line: 18 (Main)
java.lang.IllegalArgumentException: object is not an instance of declaring class
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at anywheresoftware.b4j.object.JavaObject.RunMethod(JavaObject.java:132)
    at b4j.example.main._appstart(main.java:81)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:629)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:234)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:167)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:111)
    at anywheresoftware.b4a.shell.ShellBA.raiseEvent2(ShellBA.java:100)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:98)
    at b4j.example.main.main(main.java:29)
Program terminated (StartMessageLoop was not called).
 

Attachments

  • Files.zip
    325 bytes · Views: 15

Daestrum

Expert
Licensed User
Longtime User
try
B4X:
 Jinjava.InitializeNewInstance("com.hubspot.jinjava.Jinjava",null)

then sort all the missing dependencies.
 
Upvote 0
Solution

aeric

Expert
Licensed User
Longtime User
try
B4X:
 Jinjava.InitializeNewInstance("com.hubspot.jinjava.Jinjava",null)

then sort all the missing dependencies.
Finally!
So much dependencies compared to Velocity.

Is it worth it? 🤔
Maybe. If someone is more familiar with Jinja for Python django or ansible.

B4X:
'Non-UI application (console / server application)
#Region Project Attributes
    #CommandLineArgs:
    #MergeLibraries: True
#End Region
#AdditionalJar: jinjava-2.7.3
#AdditionalJar: jackson-core-2.18.0
#AdditionalJar: jackson-databind-2.18.0
#AdditionalJar: jackson-annotations-2.18.0
#AdditionalJar: jackson-datatype-jdk8-2.18.0
#AdditionalJar: jackson-dataformat-yaml-2.18.0
#AdditionalJar: immutables-exceptions-1.9
#AdditionalJar: commons-lang3-3.17.0
#AdditionalJar: guava-33.2.1-jre
#AdditionalJar: re2j-1.7
B4X:
Sub Process_Globals
    
End Sub

Sub AppStart (Args() As String)
    Dim Jinjava As JavaObject
    Jinjava.InitializeNewInstance("com.hubspot.jinjava.Jinjava", Null)
    Dim context As Map = CreateMap("name": "Jinjava")
    Dim template As String = File.ReadString(File.DirAssets, "template.html")
    Dim renderedTemplate As String = Jinjava.RunMethod("render", Array(template, context))
    Log(renderedTemplate)
End Sub
 
Upvote 0
Top