首页 > 解决方案 > “E/AndroidRuntime: FATAL EXCEPTION: main”在我尝试创建 SipFactory 实例时引起

问题描述

我正在尝试在 android 中实现 Jain-SIP。一旦到达以下行,它就会给我一个“E/AndroidRuntime: FATAL EXCEPTION: main”错误。

SipFactory sipFactory = SipFactory.getInstance();

您知道可能导致此错误的原因吗?


完整的错误如下。

07/22 16:12:25: Launching app
$ adb install-multiple -r -t -p com.example.jainsiptestapplication /home/kubra/Documents/Android Applications/JainSipTestApplication/app/build/intermediates/split-apk/debug/slices/slice_1.apk 
Split APKs installed in 422 ms
$ adb shell am start -n "com.example.jainsiptestapplication/com.example.jainsiptestapplication.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 9814 on device Pixel_2_API_29 [emulator-5554]
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
W/testapplicatio: JIT profile information will not be recorded: profile file does not exits.
I/chatty: uid=10154(com.example.jainsiptestapplication) identical 10 lines
W/testapplicatio: JIT profile information will not be recorded: profile file does not exits.
I/InstantRun: starting instant run server: is main process
W/testapplicatio: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
    Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
W/testapplicatio: Accessing hidden method Ljavax/sip/SipFactory;->getInstance()Ljavax/sip/SipFactory; (blacklist, linking, denied)
W/testapplicatio: Accessing hidden method Ljavax/sip/SipFactory;->getInstance()Ljavax/sip/SipFactory; (blacklist, linking, denied)
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.jainsiptestapplication, PID: 9814
    java.lang.NoSuchMethodError: No static method getInstance()Ljavax/sip/SipFactory; in class Ljavax/sip/SipFactory; or its super classes (declaration of 'javax.sip.SipFactory' appears in /system/framework/ext.jar)
        at com.example.jainsiptestapplication.Shootist.init(Shootist.java:19)
        at com.example.jainsiptestapplication.MainActivity.onCreate(MainActivity.java:13)
        at android.app.Activity.performCreate(Activity.java:7783)
        at android.app.Activity.performCreate(Activity.java:7772)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3235)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3396)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2009)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7319)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
Application terminated.

我正在使用的 jain-sip 实现是实现 'javax.sip:jain-sip-ri:1.2.327' 我正在使用 Android Studio。

我的 MainActivity.java 代码如下。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new Shootist().init();
    }
}

射击类在下面。

public class Shootist implements SipListener {

    public void init() {
        SipFactory sipFactory = SipFactory.getInstance();
    }

    @Override
    public void processRequest(RequestEvent requestEvent) {

    }

    @Override
    public void processResponse(ResponseEvent responseEvent) {

    }

    @Override
    public void processTimeout(TimeoutEvent timeoutEvent) {

    }

    @Override
    public void processIOException(IOExceptionEvent exceptionEvent) {

    }

    @Override
    public void processTransactionTerminated(TransactionTerminatedEvent transactionTerminatedEvent) {

    }

    @Override
    public void processDialogTerminated(DialogTerminatedEvent dialogTerminatedEvent) {

    }
}

Jain SIP 类在常规 Java 上运行没有问题(我使用 IntelliJ)。一旦我尝试在 Android 中使用它们,我就会遇到错误。我在网上读到,问题可能是 android 不能很好地与 log4j 一起工作,而 jain-sip 库使用 log4j。

标签: javaandroidsipjain-sip

解决方案


推荐阅读