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
Cookies are required to use this site. You must accept them to continue using the site. Learn more…