Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:rx/Observable$OnSubscribe_Java - Fatal编程技术网

“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:rx/Observable$OnSubscribe

“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:rx/Observable$OnSubscribe,java,Java,我创建了一个名为RxJava的项目来演示RxJava API的使用,下面是java文件的内容 package com.limx.reactive; import rx.Observable; import rx.Subscriber; public class CreateDemo { @SuppressWarnings("deprecation") public static void main(String[] args) { Observable

我创建了一个名为RxJava的项目来演示RxJava API的使用,下面是java文件的内容

package com.limx.reactive;

import rx.Observable;
import rx.Subscriber;



public class CreateDemo {

    @SuppressWarnings("deprecation")
    public static void main(String[] args) {

        Observable.create(new Observable.OnSubscribe<Integer>() {
            @Override
            public void call(Subscriber<? super Integer> observer) {
                try {
                    if (!observer.isUnsubscribed()) {
                        for (int i = 1; i < 5; i++) {
                            observer.onNext(i);
                        }
                        observer.onCompleted();
                    }
                } catch (Exception e) {
                    observer.onError(e);
                }
            }
         } ).subscribe(new Subscriber<Integer>() {
                @Override
                public void onNext(Integer item) {
                    System.out.println("Next: " + item);
                }

                @Override
                public void onError(Throwable error) {
                    System.err.println("Error: " + error.getMessage());
                }

                @Override
                public void onCompleted() {
                    System.out.println("Sequence complete.");
                }
            });
    }
}
编译成功后在bin目录中生成了一些coresponding类文件

但是当我用

limxtop@IdeaPad:~/test/RxJava$ java -classpath ./bin com.limx.reactive.CreateDemo
发生异常

Exception in thread "main" java.lang.NoClassDefFoundError: rx/Observable$OnSubscribe
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2688)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3035)
    at java.lang.Class.getMethod0(Class.java:3005)
    at java.lang.Class.getMethod(Class.java:1771)
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: rx.Observable$OnSubscribe
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more
似乎在类“Observable”中找不到内部类“OnSubscribe”,对吗?但为什么以及如何解决

/**********************添加其他问题***************/

limxtop@IdeaPad:~/test/RxJava$ java -classpath ~/libs/rxjava-1.3.1-SNAPSHOT.jar:./bin/ com.limx.reactive.CreateDemo
Next: 1
Next: 2
Next: 3
Next: 4
Sequence complete.
上面的命令成功地工作了,但现在我还有更多的问题

  • 异常表示它找不到Observable$OnSubscribe而不是Observable的定义,这意味着Observable类已被解析,那么为什么需要rxjava-1.3.1-SNAPSHOT.jar呢

  • 类路径的顺序应该与导入链一致吗?否则,如何解释在更改顺序时它不起作用

  • 以下是bin目录中的文件:

    limxtop@IdeaPad:~/test/RxJava/bin/com/limx/reactive$ ll
    total 20
    drwxrwxr-x 2 limxtop limxtop 4096 May 29 13:03 ./
    drwxrwxr-x 3 limxtop limxtop 4096 May 29 13:03 ../
    -rw-rw-r-- 1 limxtop limxtop 1226 May 29 13:03 CreateDemo$1.class
    -rw-rw-r-- 1 limxtop limxtop 1062 May 29 13:03 CreateDemo$2.class
    -rw-rw-r-- 1 limxtop limxtop  630 May 29 13:03 CreateDemo.class
    

    您还需要将
    rxjava-1.3.1-SNAPSHOT.jar
    添加到您的类路径中,因为它包含rxjava(
    Observable
    等)类:

    如果您在Windows上工作,则需要使用
    而不是
    作为类路径分隔符

    更新


    <>请注意,<>代码> ~/<代码>扩展到您的主目录(这是由shell而不是由代码> java < /Cord>可执行文件)在当在CLSASSPATE < /Cord>声明的中间发生的地方不起作用的。您最好使用完全限定的路径或类似于
    ${HOME}/libs/rxjava-1.3.1-SNAPSHOT
    ,这样更可靠。

    尝试使用
    -classpath bin/*
    我已经尝试过了,但仍然无法工作。limxtop@IdeaPad:~/test/RxJava$java-classpath./bin/*com.limx.reactive.CreateDemo错误:无法找到或加载主类com.limx.reactive.CreateDemo实际上-classpath bin/*错误。有关解释和更多详细信息,请参阅以下位置的“理解类路径通配符”一节:limxtop@IdeaPad:~/test/RxJava$java-classpath./bin:~/libs/RxJava-1.3.1-SNAPSHOT.jar com.limx.reactive.CreateDemo线程“main”java.lang.NoClassDefFoundError中的异常:rx/observatable$onSubscribeeBut当我更改类路径值的顺序时,它工作正常,这让我很困惑。limxtop@IdeaPad:~/test/RxJava$java-classpath~/libs/RxJava-1.3.1-SNAPSHOT.jar:./bin/com.limx.reactive.CreateDemo下一步:1下一步:2下一步:3下一步:4序列完成。@可能是缺少的斜杠。你能试试
    -classpath./bin/:~/libs/rxjava-1.3.1-SNAPSHOT.jar吗
    不,我在成功更改工作顺序后尝试过这个。奇怪。。。您的
    /bin
    目录中有什么?是否还有
    rx
    套餐?
    limxtop@IdeaPad:~/test/RxJava/bin/com/limx/reactive$ ll
    total 20
    drwxrwxr-x 2 limxtop limxtop 4096 May 29 13:03 ./
    drwxrwxr-x 3 limxtop limxtop 4096 May 29 13:03 ../
    -rw-rw-r-- 1 limxtop limxtop 1226 May 29 13:03 CreateDemo$1.class
    -rw-rw-r-- 1 limxtop limxtop 1062 May 29 13:03 CreateDemo$2.class
    -rw-rw-r-- 1 limxtop limxtop  630 May 29 13:03 CreateDemo.class
    
    java -classpath ~/libs/rxjava-1.3.1-SNAPSHOT.jar:./bin com.limx.reactive.CreateDemo