1

在我的项目中,以下代码示例在没有 ice4j 包的情况下工作:

import javax.sdp.*;
public class Hello 
{
    public static void main(String[] args) throws Throwable
    {
        SdpFactory factory = SdpFactory.getInstance();
    }

}

但是,如果我包含如下 ice4j 包:

apply plugin: 'java-library'

repositories {
    google()
    jcenter()
}
jar {
    manifest {
        attributes 'Main-Class': 'Hello'
    }
    from {
        configurations.compile.collect{it.isDirectory()?it:zipTree(it)}
    }
}
dependencies {
    compile group: 'javax.sdp', name: 'nist-sdp', version: '1.0'
    compile group: 'org.jitsi', name: 'ice4j', version: '1.0'
}

sourceCompatibility = "7"
targetCompatibility = "7"

在 gradle 中添加 ice4j 包,然后构建没有问题,但如果使用以下命令运行:

java -jar build/libs/Hello.jar

报错信息:

Exception in thread "main" java.lang.NoSuchMethodError: javax.sdp.SdpFactory.getInstance()Ljavax/sdp/SdpFactory;
    at Hello.main(Hello.java:7)

为什么运行时通过编译找不到方法?

4

1 回答 1

0

请改用以下代码:

SdpFactory factory = new NistSdpFactory();//SdpFactory.getInstance();

毕业更改为:

compile group: 'org.opentelecoms.sdp', name: 'java-sdp-nist-bridge', version: '1.1'
于 2018-11-07T16:45:39.583 回答