I am doing some fiddling with the Windows routing table, the problem occurs in this code:
When running in Debug mode, the error I am getting is:
But line 644 is:
If Success And ExitCode = 0 Then
If I put some nonsense code such as:
It then fails at:
wrk_ptr = junk
I have tried all sorts of alternatives but am still generating this error.
Having run out of ideas I implore someone to tell me what is going on.
Thanks in anticipation...
B4X:
Private wrk_sh As Shell
'For all connections found...
For wrk_ptr = 0 To Gen_load_balancing_connections.Size - 1
'Set up shell to set adapter metric of connection to 5
wrk_args.Clear
wrk_args.Add("/c")
wrk_args.Add("powershell.exe set-netroute -interfacealias '" & Gen_load_balancing_connections.Get(wrk_ptr) & "' -routemetric 5")
wrk_sh.InitializeDoNotHandleQuotes("Event_shell2", "cmd.exe", wrk_args)
Try
'Run shell with a 10 min timeout
wrk_sh.Run(600000)
'Wait for shell to terminate...
Wait For Event_shell2_ProcessCompleted(Success As Boolean, ExitCode As Int, StdOut As String, StdErr As String)
If Success And ExitCode = 0 Then
Else
wrk_sms = wrk_sms & CRLF & Gen_load_balancing_connections.Get(wrk_ptr) & " - error setting adapter metric"
wrk_log = wrk_log & Gen_crlf & "Error after shell wait (setting adapter metric)..."
wrk_log = wrk_log & Gen_crlf & "Success: " & Success & Gen_crlf & "ExitCode: " & ExitCode & Gen_crlf & "StdOut: " & StdOut & Gen_crlf & "StdErr: " & StdErr
End If
Catch
wrk_sms = wrk_sms & CRLF & Gen_load_balancing_connections.Get(wrk_ptr) & " - error setting adapter metric"
wrk_log = wrk_log & Gen_crlf & "Error at shell run (setting adapter metric)..."
End Try
Next
Waiting for debugger to connect...
Program started.
Error occurred on line: 644 (Main)
java.lang.StringIndexOutOfBoundsException: String index out of range: -2
at java.base/java.lang.String.substring(String.java:1840)
at b4j.example.main$ResumableSub_AppStart.resume(main.java:2069)
at anywheresoftware.b4a.shell.DebugResumableSub$DelegatableResumableSub.resumeAsUserSub(DebugResumableSub.java:48)
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:564)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:628)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:237)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:168)
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:564)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:90)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:98)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:77)
at anywheresoftware.b4a.shell.DebugResumableSub$DelegatableResumableSub.resume(DebugResumableSub.java:43)
at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:135)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:84)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:98)
at anywheresoftware.b4a.BA$3.run(BA.java:246)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
at java.base/java.lang.Thread.run(Thread.java:844)
But line 644 is:
If Success And ExitCode = 0 Then
If I put some nonsense code such as:
B4X:
If Success And ExitCode = 0 Then
Private junk As Int = wrk_ptr
wrk_ptr = junk
Else
wrk_ptr = junk
I have tried all sorts of alternatives but am still generating this error.
Having run out of ideas I implore someone to tell me what is going on.
Thanks in anticipation...
Last edited: