Android Question ClassNotFoundException

Discussion in 'Android Questions' started by mw71, Apr 14, 2019.

  1. mw71

    mw71 Active Member Licensed User

    hi,

    i use this Modul (ZipManager, with Inline Java) to Zip the Files before upload to Google Drive:
    https://www.b4x.com/android/forum/threads/zip-multiple-files-with-abzipunzip.96968/#post-611629

    now a user and Firebase Report a Crash. The Main reason/error is:
    Caused by java.lang.ClassNotFoundException
    Didn't find class "de.xxxsoft.xxx.gdrive_service$ResumableSub_upload_Backup" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/de.xxxsoft.xxx-em5hdsfUiOPOzd0LR2oyww==/base.apk"],nativeLibraryDirectories=[/data/app/de.xxxsoft.xxx-em5hdsfUiOPOzd0LR2oyww==/lib/arm64, /system/lib64, /vendor/lib64]]
    dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:134)
    (if you Need more Error Message vom CrashAnalyics, or Code, let me know)

    Device is a Samsung with Android 9 (on my Device with Android 9, and lower, all fine)


    what is the reason and what can i do to fix it?
     
  2. Erel

    Erel Administrator Staff Member Licensed User

    It is not related to the zip feature. Are you using the old Http library instead of OkHttpUtils2?
     
  3. mw71

    mw71 Active Member Licensed User

    no, the new, internal, OkHttpUtils2
     
  4. Erel

    Erel Administrator Staff Member Licensed User

    Can you post the code in: upload_Backup ?
     
  5. mw71

    mw71 Active Member Licensed User

    Code:
    Sub Process_Globals
        
    Dim FileList_Backup As List
        
    Dim FileList_Backup_Archiv As List
        
    Dim FileList_Backup_Remote As Map
        
    Dim FileList_Backup_Remote_Archiv As Map
    ......
    FileList_Backup_Remote, hold the Name and ID from the Files in the Google Drive
    FileList_Backup & FileList_Backup_Archiv hold the Phat and Name from the local Files to Upload

    Code:
    Sub upload_Backup
        Starter.cl.lg(
    "upload_Backup")
       
        varSize=FileList_Backup.Size + FileList_Backup_Archiv.Size

        
    For i=0 To FileList_Backup.Size-1
            varCounter=i + 
    1
            varDrive_qDatei = FileList_Backup.Get(i)
           
            varReturn_FileFound_ID =
    ""
           
            
    Dim erweiterung As String
            
    If varDrive_qDatei.Contains(".zip"Then
                erweiterung=
    ""
            
    Else
                erweiterung=
    ".bak"
            
    End If
           
            
    If FileList_Backup_Remote.ContainsKey(varDrive_qDatei & erweiterung)=True Then
                Starter.cl.lg(
    "* Datei Remote")
                varDrive_zFileID=FileList_Backup_Remote.Get(varDrive_qDatei & erweiterung)
            
    Else
                Starter.cl.lg(
    "* Datei new")
                varDrive_zFileID=
    ""
            
    End If

            Starter.cl.lg(
    "Upload_File_to_Google, File: " & varDrive_qPhath & "/" & varDrive_qDatei)
            Start_Backup.Count_Upload=Start_Backup.Count_Upload+
    1
            GDrive.UploadFile(varDrive_qDatei & erweiterung,varDrive_qPhath,varDrive_qDatei,varDrive_zPhath_ID,varDrive_zFileID)
            
    wait for Drive_FileUploaded(FileID As String)
        
    Next
       
        Starter.cl.lg(
    "=============")
        CallSubDelayed(Me,
    "Upload_Backup_fin")
    End Sub
    Upload the File to Google Part:
    Code:
    'Upload a file to Google Drive
    'Name       - The Name of the filename (Name at Google Drive)
    'UploadDir  - The (local) folder of the upload file.
    'UploadFile - Filename (local) of the upload file
    'FileID     - The file ID on Google Drive. If not known, a new file will created.
    '
    'Events : FileUploadDone(FileID as string)
    'Update einbauen/Testen
    'Parrent testen
    Sub UploadFile(Name As String, LocalDir As String, LocalFilename As String, Parrent As String, FileId As String)

        Starter.cl.lg(
    "-------------------")
        Starter.cl.lg(
    "GoogleDrive, UploadFile")

        
    Dim data() As Byte

        
    If Name = "" Then Name = LocalFilename

        Starter.cl.lg(
    "LocalDir:" & LocalDir)
        Starter.cl.lg(
    "LocalFilename:" & LocalFilename)
        Starter.cl.lg(
    "Parent:" & Parrent)
        Starter.cl.lg(
    "FileID:" & FileId)
       
        
    Try
            
    Dim h_ul As HttpJob
            h_ul.Initialize(
    "",Me)
       
            
    If FileId = "" Then
                Starter.cl.lg(
    "Upload w/o File ID (create new File)")
                
    'Create the stream
                Dim boundary As String = "foo_bar_baz"
                
    Dim ContentType As String = "application/octet-stream"
                
    Dim EOL As StringChr(13) & Chr(10)

                
    Dim In As InputStream = File.OpenInput(LocalDir, LocalFilename)
                
    Dim out2 As OutputStream
                out2.InitializeToBytesArray(
    1000)

                
    Dim m As Map
                m.Initialize
                m.Put(
    "name", Name)
                
    If Parrent <>"" Then m.Put("parents",Array As String(Parrent))

                
    Dim Jg As JSONGenerator
                Jg.Initialize(m)

                
    'The first half of the POST contains the JSON data AND the Content Type from above.
                Dim RR As String = "--" & boundary & EOL & _
                                
    "Content-Type: application/json; charset=UTF-8" & EOL & EOL & _
                                Jg.ToString & EOL & EOL & _
                                
    "--" & boundary & EOL & _
                                
    "Content-Type: " & ContentType & EOL & EOL
                               
                data = (RR).GetBytes(
    "UTF-8")
       
                out2.WriteBytes(data, 
    0, data.Length)                            'Write it To the Stream.
                File.Copy2(In, out2)                                            'Add the File itself To the Stream.
                data = (EOL & EOL & "--" & boundary & "--").GetBytes("UTF-8")    'Add the final boundary to the POST
                out2.WriteBytes(data, 0, data.Length)                            'Write it To the Stream Then make the Bytes the complete Stream.
                data = out2.ToBytesArray
           
                h_ul.PostBytes(
    "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart", data)
                h_ul.GetRequest.SetContentType(
    "multipart/related; boundary=" & boundary)
                h_ul.GetRequest.SetHeader(
    "Authorization""Bearer " & myAccessToken)
            
    Else
                Starter.cl.lg(
    "Upload mit File ID (File Content Update)")
                
    'Create a new stream
                Dim OutUpdate As OutputStream
                
    Dim InUpate As InputStream = File.OpenInput(LocalDir, LocalFilename)
           
                OutUpdate.InitializeToBytesArray(
    1000)            'Initialize the stream
                File.Copy2(InUpate, OutUpdate)                    'Copy the filestream in the output stream
                data = OutUpdate.ToBytesArray                    'Fill export data array
           
                h_ul.PatchBytes(
    "https://www.googleapis.com/upload/drive/v3/files" & "/" & FileId & "?uploadType=media", data)
                h_ul.getrequest.SetHeader(
    "Authorization""Bearer " & myAccessToken)
            
    End If

            
    wait For (h_ul) JobDone(h_ul As HttpJob)

            
    If h_ul.Success Then
                Starter.cl.lg(
    "Upload File Success")
                
    'starter.cl.lg(h_ul.GetString)
                Dim j As JSONParser
                
    Dim Map1 As Map
           
                J.Initialize(h_ul.GetString)
                Map1 = J.NextObject
                FileId=Map1.Get(
    "id")
            
    else
               
           
            
    End If

        
    Catch
            Starter.cl.lg(
    "GoogleUpload File Error")
            Starter.cl.lg(
    LastException.Message)
            
    Dim writer As TextWriter
            writer.Initialize(
    File.OpenOutput(Starter.DirRootExternal,"Log_Backup_Err.txt",True))
            writer.WriteLine(LocalFilename & 
    ", " & LastException.Message)
            writer.Close
        
    End Try
       
        CallSubDelayed2(evModule, evName & 
    "_FileUploaded", FileId)
    End Sub
     
  6. Erel

    Erel Administrator Staff Member Licensed User

    This code is not needed. HttpJob has built-in support for multipart requests.

    This is a strange error. If there is only a single report of this error then you should probably ignore it for now.
     
  7. mw71

    mw71 Active Member Licensed User

    now, i know (and use it for new cases). i have write this code a view years before and it works.

    Yes, at the moment it is a single Report (1 User/Device, a view times). I will see what will happen in the future.

    many thanks for view/help
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice