首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAIN-SIP1.2for Android:缺少javax.sip.STACK_NAME属性

JAIN-SIP1.2for Android:缺少javax.sip.STACK_NAME属性
EN

Stack Overflow用户
提问于 2013-04-08 04:40:26
回答 2查看 1.1K关注 0票数 0

我正在尝试在Android设备(4.0.2)上运行JAIN-SIP Stack。我能够重新打包所需的jar文件(jain-sip-api-1.2src.jar,jain-sip-src-1.2.1111.jar,concurrent.jar,log4j-1.2.8.jar)。

这是我使用的build.xml文件:

代码语言:javascript
复制
    <!-- Converts this project's .class files into .dex files -->
  <target name="-jarjar" depends="-compile"> 
        <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
                 classpath="buildtools/jarjar-1.4.jar"/>
        <jarjar jarfile="${out.absolute.dir}/JainSipApi1.2_re.jar">
            <zipgroupfileset dir="mylib" includes="jain-sip-api-1.2-src.jar" />
            <rule pattern="javax.sip.**" result="sipper.sip.@1"/>
        </jarjar>
         <jarjar jarfile="${out.absolute.dir}/JainSipRi1.2_re.jar">
            <zipgroupfileset dir="mylib" includes="jain-sip-src-1.2.1111.jar" />
            <rule pattern="gov.nist.**" result="sipper.nist.@1"/>
        </jarjar>
         <jarjar jarfile="${out.absolute.dir}/concurrent_re.jar">
            <zipgroupfileset dir="mylib" includes="concurrent.jar" />
            <rule pattern="EDU.**" result="sipper.EDU.@1"/>
        </jarjar>
         <jarjar jarfile="${out.absolute.dir}/log4j-1.2.8_re.jar">
            <zipgroupfileset dir="mylib" includes="log4j-1.2.8.jar" />
            <rule pattern="org.apache.log4j.**" result="sipper.org.apache.log4j.@1"/>
        </jarjar>
     </target>

这是一个代码示例,我试图在非Android环境中测试重新打包的文件:

代码语言:javascript
复制
import sipper.sip.SipFactory;
...
sipFactory = SipFactory.getInstance();

sipFactory.setPathName("sipper.nist");
Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", "Sipper");
properties.setProperty("javax.sip.IP_ADDRESS", "127.0.0.1");

sipStack = sipFactory.createSipStack(properties);

当我尝试运行这段代码时,我得到了以下错误:

代码语言:javascript
复制
 Problem initializing the SIP stack.

sipper.sip.PeerUnavailableException: Missing javax.sip.STACK_NAME property
    at sipper.sip.SipFactory.createSipStack(SipFactory.java:144)
    at SipLayer.<init>(SipLayer.java:86)
    at SipperClient.main(SipperClient.java:51)

据我所知,我刚刚更改了包的名称,但它似乎不适用于某些包的“内部”。这就是为什么我查看了源代码,发现有一些硬编码的字符串,比如:

代码语言:javascript
复制
if (name == null ) throw new PeerUnavailableException("Missing javax.sip.STACK_NAME property");

现在我的问题是,有没有合适的方法/解决方案让JAIN-SIP在Android下工作?

提前感谢您的帮助:-)

丹尼尔

EN

回答 2

Stack Overflow用户

发布于 2014-10-08 09:00:45

现在有了一个支持JAIN SIP的Android端口,它是由编写了大量原始JAIN SIP堆栈的人提供的:

http://www.telestax.com/jain-sip-stack-for-android/

票数 4
EN

Stack Overflow用户

发布于 2013-08-05 22:24:17

我刚看了这篇文章,遇到了同样的问题。

几分钟后,我成功地将jain sip stack移植到Nexus 7 Android 4.1。

问题的主要原因是"Jar“包的名称。由于Android不支持包名为javax.*的库导入,因此将jsip移植到Android平台的第一步就是修改导入包名。

并且您已经使用以下脚本将其中一个包名javax.sip更改为sipper.sip。

代码语言:javascript
复制
<rule pattern="javax.sip.**" result="sipper.sip.@1"/>

这将使jsip产生您刚才提到的异常。

请先通过此link (第551~552行)查看完整的源代码。您将看到以下代码。

代码语言:javascript
复制
String name = configurationProperties.getProperty("javax.sip.STACK_NAME");

所以jsip只是找到属性来获得sip堆栈名称。最后,这个问题的答案。请在您的jsip应用程序中添加这些代码。

代码语言:javascript
复制
Properties properties = new Properties();
properties.setProperty("sipper.sip.STACK_NAME", "stack");

希望这篇文章能对你和网络观众有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15867541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档