的ExceptionInInitializerError - findLibrary返回nullExceptionInInitializerError、findLibrary、null

2023-09-12 05:51:31 作者:大男神

我收到以下错误,不知道什么可能是它的原因。我已经安装了该库以同样的方式我做了一切,从我的理解应该工作。

I have received the below error and is wondering what could be the cause of it. I have installed the library the same way I did with everything else, and from my understanding should work.

下面是日志猫

10-10 04:44:03.446: E/AndroidRuntime(1652): FATAL EXCEPTION: main
    10-10 04:44:03.446: E/AndroidRuntime(1652): java.lang.ExceptionInInitializerError
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at com.sinch.android.rtc.internal.client.ServiceFactory.createUserAgent(ServiceFactory.java:44)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at com.sinch.android.rtc.internal.client.DefaultSinchClient.<init>(DefaultSinchClient.java:157)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at com.sinch.android.rtc.internal.client.InternalSinchClientFactory.createSinchClient(InternalSinchClientFactory.java:14)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at com.sinch.android.rtc.DefaultSinchClientBuilder.build(DefaultSinchClientBuilder.java:95)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at com.dooba.beta.MessageService.startSinchClient(MessageService.java:56)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at com.dooba.beta.MessageService.onStartCommand(MessageService.java:40)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2490)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at android.app.ActivityThread.access$1900(ActivityThread.java:130)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at android.os.Handler.dispatchMessage(Handler.java:99)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at android.os.Looper.loop(Looper.java:137)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at android.app.ActivityThread.main(ActivityThread.java:4745)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at java.lang.reflect.Method.invokeNative(Native Method)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at java.lang.reflect.Method.invoke(Method.java:511)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at dalvik.system.NativeStart.main(Native Method)
    10-10 04:44:03.446: E/AndroidRuntime(1652): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load sinch-android-rtc: findLibrary returned null
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at java.lang.Runtime.loadLibrary(Runtime.java:365)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at java.lang.System.loadLibrary(System.java:535)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     at com.sinch.android.rtc.internal.natives.jni.UserAgentFactory.<clinit>(UserAgentFactory.java:9)
    10-10 04:44:03.446: E/AndroidRuntime(1652):     ... 17 more

下面是code其中触发此错误(一旦用户点击快速聊天按钮):

Below is the code where this error was triggered (once user clicks on the quick chat button):

public class matchOptionActivity1 extends Activity{

    protected TextView mUserRetrieved;
       private String currentUserId;

       protected TextView mUserActivityNameRetrieved;
       protected TextView mUserNameRetrieved;
       protected TextView mUserAgeRetrieved;
       protected TextView mUserHeadlineRetrieved;
       String userGender = ParseUser.getCurrentUser().getString("Gender");
       String activityName = ParseUser.getCurrentUser().getString("ActivityName");
       Number maxDistance = ParseUser.getCurrentUser().getNumber(
               "Maximum_Distance");
       String userLookingGender = ParseUser.getCurrentUser().getString(
               "Looking_Gender");
       Number minimumAge = ParseUser.getCurrentUser().getNumber("Minimum_Age");
       Number maximumAge = ParseUser.getCurrentUser().getNumber("Maximum_Age");
       Number userage = ParseUser.getCurrentUser().getNumber("UserAge");
       private FeedbackDialog feedBack;
       private ProgressDialog progressDialog;
       private BroadcastReceiver receiver;
       private MessageService.MessageServiceInterface sinchService;
       private Boolean bound = false;





  @Override
  public void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);
      setContentView(R.layout.matchoption);



   feedBack = new FeedbackDialog(this, "AF-46D8F2A319EA-0A");
      ParseQuery<ParseUser> query = ParseUser.getQuery();

      // query.whereEqualTo("ActivityName",userActivitySelectionName);

      query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
              .getObjectId());
      // users with Gender = currentUser.Looking_Gender
      query.whereEqualTo("Gender", userLookingGender);
      // users with Looking_Gender = currentUser.Gender
      query.whereEqualTo("Looking_Gender", userGender);
      query.setLimit(1);
      //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");
      query.whereEqualTo("ActivityName", activityName);
      query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
      query.whereLessThanOrEqualTo("UserAge", maximumAge);

      ParseQuery<ParseUser> query2 = ParseUser.getQuery();

      // query.whereEqualTo("ActivityName",userActivitySelectionName);

      query2.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
              .getObjectId());
      // users with Gender = currentUser.Looking_Gender
      query2.whereEqualTo("Gender", userLookingGender);
      // users with Looking_Gender = currentUser.Gender
      query2.whereEqualTo("Looking_Gender", userGender);
      query2.setLimit(1);
      //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");
      query2.whereEqualTo("ActivityName", activityName);
      query2.whereGreaterThanOrEqualTo("UserAge", minimumAge);
      query2.whereLessThanOrEqualTo("UserAge", maximumAge);

      query.findInBackground(new FindCallback<ParseUser>() {
          @Override
          public void done(List<ParseUser> objects,ParseException e) {

              for(int i=0;i<objects.size();i++){
                  // Do whatever you need to extract object from "users"
                  ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
                  query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
                          .getObjectId());
                  // users with Gender = currentUser.Looking_Gender
                  query.whereEqualTo("Gender", userLookingGender);
                  // users with Looking_Gender = currentUser.Gender
                  query.whereEqualTo("Looking_Gender", userGender);
                  query.setLimit(1);
                  //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");

                  query.whereEqualTo("ActivityName", activityName);
                  query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
                  query.whereLessThanOrEqualTo("UserAge", maximumAge);

                  mUserNameRetrieved = (TextView) findViewById(R.id.tvmname1);

                  mUserNameRetrieved.setText(objects.get(i).get("Name").toString()); 



              }
  }//for loop
          });

      query2.findInBackground(new FindCallback<ParseUser>() {

          @Override
          public void done(List<ParseUser> objects,ParseException e) {

              for(int i=0;i<objects.size();i++){
                  // Do whatever you need to extract object from "users"
                     ParseQuery<ParseObject> query2 = ParseQuery.getQuery("User");
                     query2.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
                             .getObjectId());
                     // users with Gender = currentUser.Looking_Gender
                     query2.whereEqualTo("Gender", userLookingGender);
                     // users with Looking_Gender = currentUser.Gender
                     query2.whereEqualTo("Looking_Gender", userGender);
                     query2.setLimit(1);
                   //  query2.whereEqualTo("UserMatchedRequest1", "confirmed");

                     query2.whereEqualTo("ActivityName", activityName);
                     query2.whereGreaterThanOrEqualTo("UserAge", minimumAge);
                     query2.whereLessThanOrEqualTo("UserAge", maximumAge);


                  ParseFile image = objects.get(i).getParseFile("ProfilePicture");


                  ParseImageView imageView = (ParseImageView) findViewById(R.id.profilePictureresultm);



                   // The placeholder will be used before and during the fetch, to be replaced by the fetched image
                   // data.
                   imageView.setPlaceholder(getResources().getDrawable(R.drawable.profile_pict));
                   imageView.setParseFile(image);

                   imageView.loadInBackground(new GetDataCallback() {
                     @Override
                     public void done(byte[] data, ParseException e) {
                         if (data != null) {
                             Log.i("ParseImageView", "Fetched: " + data.length);
                           } else {
                             Log.e("ParseImageView", "Error fetching: " + e.getMessage());
                           }
                     }


               });
              }
  }//for loop
          });




      final Button ichat = (Button) this.findViewById(R.id.btnQuickChat);
       ichat.setOnClickListener(new OnClickListener() {

           @Override
           public void onClick(View v) {


          openConversation();


           }


           private void openConversation() {
               // TODO Auto-generated method stub
                 ParseQuery<ParseUser> query = ParseUser.getQuery();
                    query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
                          .getObjectId());
                       // users with Gender = currentUser.Looking_Gender
                        query.whereEqualTo("Gender", userLookingGender);
                        // users with Looking_Gender = currentUser.Gender
                         query.whereEqualTo("Looking_Gender", userGender);
                        query.setLimit(1);
                       query.whereEqualTo("ActivityName", activityName);
                       query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
                        query.whereLessThanOrEqualTo("UserAge", maximumAge);


                   query.findInBackground(new FindCallback<ParseUser>() {
                       public void done(List<ParseUser> user, ParseException e) {
                             if (e == null) {

                                  Intent intent = new Intent(getApplicationContext(), MessagingActivity1.class);
                                  Intent serviceIntent = new Intent(getApplicationContext(), MessageService.class); 
                                  startService(serviceIntent);
                                  intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                                  startActivity(intent);
                              } else {
                                  Toast.makeText(getApplicationContext(),
                                      "Error finding that user",
                                          Toast.LENGTH_SHORT).show();
                              }
                          }
                       });
                   }
       });


}



//show a loading spinner while the sinch client starts
  private void showSpinner() {
      progressDialog = new ProgressDialog(this);
      progressDialog.setTitle("Loading");
      progressDialog.setMessage("Please wait...");
      progressDialog.show();

      receiver = new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intent) {
              Boolean success = intent.getBooleanExtra("success", false);
              progressDialog.dismiss();
              if (!success) {
                  Toast.makeText(getApplicationContext(), "Messaging service failed to start", Toast.LENGTH_LONG).show();
              }
          }
      };

      LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter("com.dooba.beta.matchOptionActivity1"));
  }

  @Override
  public void onResume() {

      super.onResume();
  }
}

连接是图片显示的库

Attach is a picture showing the library

任何帮助将是很大的AP preciated因为我一直在努力奋斗着这个错误了一会儿。

Any help would be greatly appreciated as I have been struggling with this error for a while.

注:我使用的Eclipse

Note: I am using eclipse

推荐答案

在该设备是你测试的应用程序,sinch SDK不具备的x86库,您将看到 findLibrary返回null 在任何x86基于消息的Andr​​oid设备或仿真器(英特尔HAXM) - 包括genymotion

On which device are you testing the app, sinch SDK does not have libraries for x86, you will see findLibrary returned null message on any x86 based android device or emulators (Intel HAXM) - including genymotion.