java - OkHttp NetBeans NoClassDefFoundError

标签 java noclassdeffounderror netbeans-8 okhttp

我有一个 Android 应用程序,使用 OkHttp 进行网络速度测试。现在我需要使用 NetBeans 8.2 创建另一个桌面客户端,但我无法使 OkHttp 工作。我包含库 okhttp-3.11.0 和 okio-2.0.0,但出现 java.lang.NoClassDefFoundError。

我的代码是:

public class TestCheckNetwork {

private final JFrame frame;
private final OkHttpClient client;

long startTime;
long endTime;
long fileSize;

TestCheckNetwork(JFrame frame) {
    this.frame = frame;
    client = new OkHttpClient();
}

void initTest() {
    Request request = new Request.Builder().url("http://ipv4.ikoula.testdebit.info/50k.iso").build();

    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            e.printStackTrace();
            Utils.speedNetwork = 0;
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {

            startTime = System.currentTimeMillis();

            if (!response.isSuccessful()) {
                throw new IOException("Unexpected code " + response);
            }

            Headers responseHeaders = response.headers();
            for (int i = 0, size = responseHeaders.size(); i < size; i++) {
                //TODO log
            }

            InputStream input = response.body().byteStream();

            try {
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];

                while ((System.currentTimeMillis() - startTime) < 50000 && input.read(buffer) != -1) {
                    bos.write(buffer);
                }
                byte[] docBuffer = bos.toByteArray();
                fileSize = bos.size();
                bos.close();

            } finally {
                input.close();
            }

            endTime = System.currentTimeMillis();

            // calculate how long it took by subtracting endtime from starttime
            double timeTakenMills = Math.floor(endTime - startTime);  // time taken in milliseconds
            final double timeTakenSecs = timeTakenMills / 1000;  // divide by 1000 to get time in seconds
            final int kilobytePerSec = (int) Math.round(1024 / timeTakenSecs);


            // get the download speed by dividing the file size by time taken to download
            final double speed = fileSize / timeTakenMills;
            Utils.speedNetwork = (int) speed;



        }
    });
}
}

得到的错误是:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: kotlin/TypeCastException
at okhttp3.ResponseBody.create(ResponseBody.java:210)
at okhttp3.internal.Util.<clinit>(Util.java:60)
at okhttp3.OkHttpClient.<clinit>(OkHttpClient.java:123)
at assistantremote.TestCheckNetwork.<init>(TestCheckNetwork.java:35)
at assistantremote.AssistantRemote.inicializate(AssistantRemote.java:119)
at assistantremote.AssistantRemote.<init>(AssistantRemote.java:81)
at assistantremote.AssistantRemote.lambda$main$0(AssistantRemote.java:1758)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: kotlin.TypeCastException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 21 more
BUILD STOPPED (total time: 6 seconds)

我只找到了适用于 Maven 或 Android 的解决方案。我的错误在哪里或者如果没有 OkHttp 我该怎么做?谢谢你

最佳答案

尝试将 kotlin stdlib 和 stdlib-common 依赖项添加到您的构建中。

关于java - OkHttp NetBeans NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153201/

相关文章:

Java反射调用不起作用

java - Keycloak:使用 Java API 客户端将客户端角色添加到服务帐户角色

java - 使用键、值对实现 MaxHeap

hibernate - spring、hibernate、MVC,如何检测映射有什么问题

java - 使用 NetBeans IDE 远程部署项目

java - 如何创建一个数组,提示用户输入 taco 1 的名称,然后输入价格 1?

c# - 什么是 C# 等同于 Java 的 Throwable?

java - 更新到 Spring 5.1 - java.lang.NoClassDefFoundError : org/springframework/http/server/reactive/ServletServerHttpResponse$ResponseBodyProcessor

java - 如何在 LINUX 上设置环境变量 CLASSPATH 和 NoClassDefFoundError

java - 如何将我的 NetBeans 项目加载到 sonarqube 中?