UnsatisfiedLinkError:找不到本机方法:android.net.LocalSocketImpl.connectLocal

时间:2014-04-03 12:16:21

标签: java android

这是我的简单测试程序

import java.io.IOException;
import android.net.LocalSocket;
import android.net.LocalSocketAddress;

public class TestAndroid
{
    public TestAndroid() {
        super();
    }

    private void run() throws IOException {
        System.out.println("started");

        LocalSocket ls = new LocalSocket();

        System.out.println("connecting");
        ls.connect(new LocalSocketAddress("blablabla"));
        System.out.println("connected");
    }

    public static void main(String argv[]) 
    {
        try {
            new TestAndroid().run();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我使用的是Oracle jdk 1.6.0,这是一个构建命令

javac -cp $ANDROID_SDK_ROOT/platforms/android-9/android.jar TestAndroid.java
dx --dex --output=test.dex TestAndroid.class

此命令在Android上的colsole中运行测试应用程序

dalvikvm -cp test.dex TestAndroid
started
connecting
java.lang.UnsatisfiedLinkError: Native method not found: android.net.LocalSocketImpl.connectLocal:(Ljava/io/FileDescriptor;Ljava/lang/String;I)V
    at android.net.LocalSocketImpl.connectLocal(Native Method)
    at android.net.LocalSocketImpl.connect(LocalSocketImpl.java:287)
    at android.net.LocalSocket.connect(LocalSocket.java:130)
    at TestAndroid.run(TestAndroid.java:17)
    at TestAndroid.main(TestAndroid.java:24)
    at dalvik.system.NativeStart.main(Native Method)

我的代码有什么问题?我认为android.net.LocalSocket可用于任何Android系统。

1 个答案:

答案 0 :(得分:0)

此示例无效。它必须是带有清单的android应用程序的标准项目。如果该代码放入此类项目中,则此代码将被视为已被解除。