B4J Question Linux issue

Fabrice La

Active Member
Licensed User
Longtime User
My appli works perfectly in windows.

In linux I have this issue (Seems to be encryption)

I am using jRandomAccessFile

B4X:
Exception in runnable
java.lang.RuntimeException: java.nio.BufferUnderflowException
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:111)
    at anywheresoftware.b4a.BA$2.run(BA.java:158)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
    at com.sun.glass.ui.gtk.GtkApplication.enterNestedEventLoopImpl(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication._enterNestedEventLoop(GtkApplication.java:144)
    at com.sun.glass.ui.Application.enterNestedEventLoop(Application.java:384)
    at com.sun.glass.ui.EventLoop.enter(EventLoop.java:83)
    at com.sun.javafx.tk.quantum.QuantumToolkit.enterNestedEventLoop(QuantumToolkit.java:523)
    at javafx.stage.Stage.showAndWait(Stage.java:397)
    at anywheresoftware.b4j.objects.Form.ShowAndWait(Form.java:172)
    at b4j.example.frmlogin._show(frmlogin.java:217)
    at b4j.example.main._loginfirst(main.java:154)
    at b4j.example.main._appstart(main.java:96)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:92)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:83)
    at b4j.example.main.start(main.java:33)
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:216)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication$3$1.run(GtkApplication.java:89)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.nio.BufferUnderflowException
    at java.nio.Buffer.nextGetIndex(Buffer.java:498)
    at java.nio.DirectByteBuffer.getInt(DirectByteBuffer.java:671)
    at anywheresoftware.b4a.randomaccessfile.RandomAccessFile.ReadInt(RandomAccessFile.java:122)
    at anywheresoftware.b4a.randomaccessfile.RandomAccessFile.readHelper(RandomAccessFile.java:346)
    at anywheresoftware.b4a.randomaccessfile.RandomAccessFile.ReadEncryptedObject(RandomAccessFile.java:343)
    at b4j.example.hexcrypt._fromhexastring(hexcrypt.java:57)
    at b4j.example.hexcrypt._crypt(hexcrypt.java:33)
    at b4j.example.frmlogin._btnok_action(frmlogin.java:78)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at anywheresoftware.b4a.BA.raiseEvent2(BA.java:92)
    ... 33 more
 

Fabrice La

Active Member
Licensed User
Longtime User
Yes
B4X:
Public Sub Crypt(sAction As String, sStrInput As String, sCryptKey As String, sName As String) As String
  sAction = sAction.ToUpperCase
  Select sAction.ToUpperCase
  Case "de".ToUpperCase
      Return FromHexaString(sStrInput, sCryptKey, sName)
  Case "en".ToUpperCase
      Return ToHexaString(sStrInput, sCryptKey, sName)
  End Select
  Return "Rien"
End Sub

Private Sub ToHexaString(sStr As String, sCryptKey As String, sName As String) As String
    Dim raf As RandomAccessFile
    raf.Initialize(File.DirApp,sName & ".dat",False)
    raf.WriteEncryptedObject(sStr,sCryptKey,raf.CurrentPosition)
    raf.Close
    Dim TR As TextReader
    TR.Initialize(File.OpenInput(File.DirApp,sName & ".dat"))
    Dim sRes As String
    sRes = TR.ReadLine
    TR.Close
      Return sRes
End Sub

Private Sub FromHexaString(sStr As String, sCryptKey As String, sName As String) As String
    Dim sRes As String
    Dim raf As RandomAccessFile
    raf.Initialize(File.DirApp, sName & ".dat", False)
    sRes = raf.ReadEncryptedObject(sCryptKey, raf.CurrentPosition)
    raf.Close
Return sRes
End Sub
 
Upvote 0

Fabrice La

Active Member
Licensed User
Longtime User
I find out that in Linux Directories are not in the same place that in Windows.

I specified the directory where the files will be saved. Now it works.
 
Upvote 0
Top