1

私は新しい Android 開発者で、現在、andorid に JSIP を実装しようとしています。andorid に jsip api を追加すると、jsip の javax パッケージが Java のデフォルトの javax パッケージと競合するというエラーが表示されます。

したがって、すべての javax パッケージを com.g5.javax.* この形式に変更しました。その後、エラーが消えます。しかし、このメッセージに添付した別のエラーが発生しました。javax.sip.PeerUnavailableException: stack name is missing エラーで java.lang.reflect.InvocationTargetException がスローされます。jain sipソースを確認して再確認したところ、プロパティキー「com.g5.javax.sip.STACK_NAME」(Eclipseを使用したリファクタリングによって変更)に、指定した値があることがわかりました。しかし、毎回エラーが発生しました。もう 1 つの興味深い情報は、私が作成した同じ jar パッケージがデスクトップ アプリケーションで完全に動作することです。私はこのエラーに2日間立ち往生しています。

09-27 04:58:13.819: I/System.out(564): class java.util.Properties
09-27 04:58:13.839: I/System.out(564): {com.g5.javax.sip.STACK_NAME=123}
09-27 04:58:13.869: E/com.g5(564): cannot instantiate
09-27 04:58:13.869: E/com.g5(564): com.g5.javax.sip.PeerUnavailableException: The Peer SIP Stack: gov.nist.javax.sip.SipStackImpl could not be instantiated. Ensure the Path Name has been set.
09-27 04:58:13.869: E/com.g5(564):  at com.g5.javax.sip.SipFactory.createStack(SipFactory.java:332)
09-27 04:58:13.869: E/com.g5(564):  at com.g5.javax.sip.SipFactory.createSipStack(SipFactory.java:154)
09-27 04:58:13.869: E/com.g5(564):  at com.shootme.Shootme.init(Shootme.java:104)
09-27 04:58:13.869: E/com.g5(564):  at com.shootme.Shootme.onCreate(Shootme.java:87)
09-27 04:58:13.869: E/com.g5(564):  at android.app.Activity.performCreate(Activity.java:4465)
09-27 04:58:13.869: E/com.g5(564):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-27 04:58:13.869: E/com.g5(564):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
09-27 04:58:13.869: E/com.g5(564):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
09-27 04:58:13.869: E/com.g5(564):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
09-27 04:58:13.869: E/com.g5(564):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
09-27 04:58:13.869: E/com.g5(564):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-27 04:58:13.869: E/com.g5(564):  at android.os.Looper.loop(Looper.java:137)
09-27 04:58:13.869: E/com.g5(564):  at android.app.ActivityThread.main(ActivityThread.java:4424)
09-27 04:58:13.869: E/com.g5(564):  at java.lang.reflect.Method.invokeNative(Native Method)
09-27 04:58:13.869: E/com.g5(564):  at java.lang.reflect.Method.invoke(Method.java:511)
09-27 04:58:13.869: E/com.g5(564):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-27 04:58:13.869: E/com.g5(564):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-27 04:58:13.869: E/com.g5(564):  at dalvik.system.NativeStart.main(Native Method)
09-27 04:58:13.869: E/com.g5(564): Caused by: java.lang.reflect.InvocationTargetException
09-27 04:58:13.869: E/com.g5(564):  at java.lang.reflect.Constructor.constructNative(Native Method)
09-27 04:58:13.869: E/com.g5(564):  at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
09-27 04:58:13.869: E/com.g5(564):  at com.g5.javax.sip.SipFactory.createStack(SipFactory.java:322)
09-27 04:58:13.869: E/com.g5(564):  ... 17 more
09-27 04:58:13.869: E/com.g5(564): Caused by: javax.sip.PeerUnavailableException: stack name is missing
09-27 04:58:13.869: E/com.g5(564):  at gov.nist.javax.sip.SipStackImpl.<init>(SipStackImpl.java:554)
4

3 に答える 3

1

私も同じ問題を抱えているので、スタックの実装に関するエラーが報告されていないので、もう少し掘り下げてみました。これから私はこのエラーを得ました:

11-11 18:51:01.025: W/System.err(17454): javax.sip.PeerUnavailableException: stack name is missing
11-11 18:51:01.025: W/System.err(17454):    at gov.nist.javax.sip.SipStackImpl.<init>(SipStackImpl.java:554)
11-11 18:51:01.025: W/System.err(17454):    at not.javax.sip.SipFactory.createStack(SipFactory.java:322)
11-11 18:51:01.025: W/System.err(17454):    at not.javax.sip.SipFactory.createSipStack(SipFactory.java:171)
11-11 18:51:01.025: W/System.err(17454):    at org.jaintest.MainActivity.init(MainActivity.java:110)
11-11 18:51:01.025: W/System.err(17454):    at org.jaintest.MainActivity.onCreate(MainActivity.java:68)
11-11 18:51:01.025: W/System.err(17454):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-11 18:51:01.025: W/System.err(17454):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
11-11 18:51:01.025: W/System.err(17454):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
11-11 18:51:01.025: W/System.err(17454):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-11 18:51:01.025: W/System.err(17454):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
11-11 18:51:01.025: W/System.err(17454):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-11 18:51:01.025: W/System.err(17454):    at android.os.Looper.loop(Looper.java:123)
11-11 18:51:01.025: W/System.err(17454):    at android.app.ActivityThread.main(ActivityThread.java:3691)
11-11 18:51:01.025: W/System.err(17454):    at java.lang.reflect.Method.invokeNative(Native Method)
11-11 18:51:01.025: W/System.err(17454):    at java.lang.reflect.Method.invoke(Method.java:507)
11-11 18:51:01.025: W/System.err(17454):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
11-11 18:51:01.025: W/System.err(17454):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
11-11 18:51:01.025: W/System.err(17454):    at dalvik.system.NativeStart.main(Native Method)

ここで問題です。SipStackImpl クラスのコードを調べたところ、次の行が見つかりました。

String name = configurationProperties
    .getProperty("com.tlccom.javax.sip.STACK_NAME");
if (name == null) 
    throw new PeerUnavailableException("stack name is missing");

つまり、名前が取り上げられていないということです。そのため、名前に文字列値を指定しましたが、それでもエラーが発生したため、SipStackImpl が別の場所から取得されていると信じています。問題は、どこにあるかわからないことです。プロジェクト全体でそのエラーを検索しましたが、それが存在する唯一の場所であるため、どこかから来ているに違いありません(エラー検出をコメントアウトしてもエラーが残ります)。それが私が今立ち往生しているところです。これが役立つことを願っています。何か余分なものを見つけたら教えてください

于 2012-11-11T20:56:08.740 に答える
0

Android 4.4.2で動作するように完成しました。

私が最初に信じるのは、あなたがしたことをすることです。たとえば、javax名前空間を別のものに変更しました。whatever.javax.*

それから、マーティンが彼の答えで述べたのと同じ問題がありました.SOに関する彼の言葉に感謝しています. gov.nist名前空間は、実行時に別の場所にも存在するようです。だから私がしたことは、名前空間も同様に変更したことです(もちろん、それへのすべての参照も)。gov.nist.*gov.nist.whatever

また、プロパティを"gov.nist.whatever.javax.sip.STACK_NAME"どこかに提供する必要があります。次を使用してそれを行うことができます。

Properties properties = new Properties();
properties.setProperty("sipper.sip.STACK_NAME", "stack");

この回答でマイクが指摘したように、アプリのどこかに。

結局のところ、クラスパスにそれぞれのjarが含まれていてもNoClassFoundError、クラスの例外に問題がありました。そこで、すべての jar を「asset」プロジェクト ディレクトリから「libs」という新しいディレクトリに移動しました。私のプロジェクトのクラスパスを新しいディレクトリスキームで再構成し、魅力的に機能しました(OK、誇張はありません)。org.apache.log4j.Logger

于 2014-07-24T11:44:31.310 に答える
0

キーjavax.sip.STACK_NAMEのプロパティで名前を設定する必要があります

properties.setProperty("javax.sip.STACK_NAME", "myStack");
于 2015-07-06T13:00:11.207 に答える