B4J Question jShell - passing variables

atiaust

Active Member
Licensed User
Longtime User
Hi All

I am using jShell to start another B4J app on a remote server which works fine.

My question is how do I pass a variable to the remote app so that it is accessible from the
Appstart(from1 as Form, Args() as String).

I start the remote app with
B4X:
Sub startApp
    Log("Starting Remote App")
    jshl.Initialize("jsl","java",Array As String("-jar","myApp.jar"))
    jshl.WorkingDirectory = "Z:\B4jApps"
    jshl.run(-1)
End Sub

I tried adding the string after "myApp.jar" but I am pretty sure that isn't correct.

Any one know?

Thanks
 

jmon

Well-Known Member
Licensed User
Longtime User
in cmd, try typing "java -help" you will get all the parameters:

--> java [options] -jar jarfile [args...]
so it seems that you should pass it this way, by just adding your args after the jarfile filename:
B4X:
Sub startApp
    Log("Starting Remote App")
    jshl.Initialize("jsl","java",Array As String("-jar","myApp.jar", "arg1", "arg2", "arg3"))
    jshl.WorkingDirectory = "Z:\B4jApps"
    jshl.run(-1)
End Sub
 
Upvote 0

atiaust

Active Member
Licensed User
Longtime User
Thanks jmon,

Tried that. I added 'arg1' as a string " = OK"

In the app the called app , I checked for a string of any length ie

B4X:
Sub appstart(form1 as form, arg() as string)
      If arg(0).length > 0 then
          Log("found arg(0)")
     end if

Nothing shows up in the logs..
 
Upvote 0

jmon

Well-Known Member
Licensed User
Longtime User
it works for me ??
try this:
B4X:
For i = 0 To Args.Length -1
    Log(Args(i))
Next
that will loops through all your args and log them.

I'm not sure, but it could be because of the spaces. in this case try "shl.InitializeDoNotHandleQuotes", and add quotes around your args:
B4X:
Sub startAppLog("Starting Remote App")
    jshl.InitializeDoNotHandleQuotes("jsl","java",Array As String("-jar","myApp.jar", $"" = OK""$))
    jshl.WorkingDirectory = "Z:\B4jApps"
    jshl.run(-1)
End Sub
notice how the args are wrapped into double quotes: $"" = OK""$
 
Upvote 0

atiaust

Active Member
Licensed User
Longtime User
Thanks jmon,

Sorry there was a typo in my last post. Should have been 'arg1' as a string = "OK" ....(fat fingers)

Will try your suggestion
 
Upvote 0

Similar Threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…