eclipse 不会总是显示 javadoc 或 rxjava2 Observable 的开放声明(不规律地)
eclipse won't always show javadoc or open declaration of rxjava2 Observable (erratically)
蚀氧3(2018 年 3 月)。
普通 java 项目,带有 rxjava jar 和源代码。
.classpath 文件:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk18"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="rxjava-2.1.12.jar" sourcepath="rxjava-2.1.12-sources.jar"/>
<classpathentry kind="lib" path="reactive-streams-1.0.2.jar"/>
<classpathentry kind="output" path="output"/>
</classpath>
我可以ctrl-click "Observable",我可以看到源码。
但是如果我使用类似的东西:
static void test1() throws InterruptedException {
//Flowable.range(0, 1000)
Observable.range(0, 1000)
.doOnNext(i -> {
System.out.println(", r"+i);
})
.subscribeOn(Schedulers.newThread())
.observeOn(Schedulers.newThread())
.doOnNext(i -> {
System.out.println(", w"+i);
})
.subscribeOn(Schedulers.newThread())
.subscribe( i -> System.out.println(", f"+i));
Thread.sleep(5000);
}
然后有许多方法无法获得 javadoc 悬停弹出窗口并且无法使用 ctrl 键单击打开声明。
.range()、第一个 doOnNext()、第一个 subscribeOn() 和 observeOn() 无法打开,并且有 javadoc 但没有工具提示弹出窗口,其他的有!第二个 doOnNext()、第二个 subscribeOn() 和最后一个 subscribe() 方法确实显示 javadoc 工具提示并且可以按住 ctrl 单击。
这快把我逼疯了...我需要用 Eclipse 做什么才能解决这个问题?您知道为此报告的 eclipse 错误吗?
它似乎只发生在 rxjava 上。当然这是一个 IDE 错误,但我无法在其他库上轻松重现。我认为这是因为 "Observable" 有太多方法,也许它不能看到超过 N 个。但后来它向我展示了相同方法(如 doOnNext())的 javadoc/opendeclaration,只是因为它在源代码的其他地方...WTF?
这可能是 Eclipse Bug 515758,即 RxJava 似乎包含一些签名,这些签名打破了选择/解析对该库的引用的用例。解析失败后,该工具不知道应该为哪个元素显示 javadoc。
蚀氧3(2018 年 3 月)。 普通 java 项目,带有 rxjava jar 和源代码。 .classpath 文件:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk18"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="rxjava-2.1.12.jar" sourcepath="rxjava-2.1.12-sources.jar"/>
<classpathentry kind="lib" path="reactive-streams-1.0.2.jar"/>
<classpathentry kind="output" path="output"/>
</classpath>
我可以ctrl-click "Observable",我可以看到源码。 但是如果我使用类似的东西:
static void test1() throws InterruptedException {
//Flowable.range(0, 1000)
Observable.range(0, 1000)
.doOnNext(i -> {
System.out.println(", r"+i);
})
.subscribeOn(Schedulers.newThread())
.observeOn(Schedulers.newThread())
.doOnNext(i -> {
System.out.println(", w"+i);
})
.subscribeOn(Schedulers.newThread())
.subscribe( i -> System.out.println(", f"+i));
Thread.sleep(5000);
}
然后有许多方法无法获得 javadoc 悬停弹出窗口并且无法使用 ctrl 键单击打开声明。
.range()、第一个 doOnNext()、第一个 subscribeOn() 和 observeOn() 无法打开,并且有 javadoc 但没有工具提示弹出窗口,其他的有!第二个 doOnNext()、第二个 subscribeOn() 和最后一个 subscribe() 方法确实显示 javadoc 工具提示并且可以按住 ctrl 单击。
这快把我逼疯了...我需要用 Eclipse 做什么才能解决这个问题?您知道为此报告的 eclipse 错误吗?
它似乎只发生在 rxjava 上。当然这是一个 IDE 错误,但我无法在其他库上轻松重现。我认为这是因为 "Observable" 有太多方法,也许它不能看到超过 N 个。但后来它向我展示了相同方法(如 doOnNext())的 javadoc/opendeclaration,只是因为它在源代码的其他地方...WTF?
这可能是 Eclipse Bug 515758,即 RxJava 似乎包含一些签名,这些签名打破了选择/解析对该库的引用的用例。解析失败后,该工具不知道应该为哪个元素显示 javadoc。