我遇到IntelliJ的问题 - 如果我按住c +单击该类,它会向我显示该类的"反编译"版本而不是其源代码.
这就是我所看到的:

我正在尝试打开常规的JDK源文件.
我找到的最相关的问题在这里解释:Java源代替Intellij中的反编译文件
到目前为止我发现的最详细的答案也是如此.
但它对我不起作用:
字节码查看器插件已关闭.
Java Bytecode Decompiler插件已关闭.
平台,项目和模块都具有相同的JDK版本设置.
我在IntelliJ中有两个JDK:jdk1.8.0_161和jbsdk8u112b287.2_windows_x86(与IntelliJ捆绑在一起,但没有src.zip).尝试两者(必须为jbskk指定src.zip jdk1.8.0_161为jbsdk8u112b287.2_windows_x86) - 没有运气
src.zip没有损坏 - 我可以通过WinRAR打开它
将jdk1.8.0_161添加到IntelliJ时,它会自动找到src.zip.当手动将src.zip添加到jbsdk8u112b287.2_windows_x86 Sourcepath选项卡时 - 它开始"扫描根目录",但警告我"无法确定所选项目包含哪种文件"并提示我"将它们附加为'源''"所以我同意了.
尝试文件>无效缓存/重新启动... - 相同的结果.
2017.3和IntelliJ的2018.1新版本中的相同问题.
为文档提供路径使IntelliJ在指定的路径中查找文档.所以它适用于两个JDK.但不是来源.
其他所有工作/编译正确.
我的设置:

我在哪里可以找到javax.crypto源代码?
--update 感谢OpenJdk版本,但是jdk6版本怎么样?
我的IDE非常适合为JDK类找到相应的Java源代码。例如,我可以java.lang.String在IDE中打开并查看实际的Java源代码。但是,当我尝试打开sun.net.www.http.HttpClient(包含在Java SDK中)时,IDE只是向我显示了反编译的.class文件,很难读取。
我在macOS上的IDE正在寻找中的源代码/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/src.zip,如果我解压缩该归档文件String.java,HttpClient.java则可以找到,但无处可寻。因此,我的IDE找不到它是有道理的。
在哪里可以获得完整的JDK源代码?
我有以下代码抛出ConcurrentModificationException,因为我在同一个列表中使用两个不同的迭代器,其中一个正在修改列表.因此,第二个迭代器在读取列表时抛出异常,因为其他迭代器已经修改了列表.
List<Integer> list = new ArrayList<>();
populate(list);//A method that adds integers to list
ListIterator<Integer> iterator1 = list.listIterator();
ListIterator<Integer> iterator2 = list.listIterator();
while (iterator1.hasNext()) {
if(iterator1.next() < 5)
iterator1.remove();
}
while (iterator2.hasNext()){
if(iterator2.next() < 5) {
//Call handler
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果它还没有到达一个尚未被删除的元素,那么内部如何iterator2知道has已被其他迭代器修改过?怎么弄清楚其他一些人已经改变了?一种方法可能是跟踪大小,但这不是原因,因为其他迭代器可以只替换任何元素.listiterator1iteratorlist
java collections exception concurrentmodification listiterator
java ×4
collections ×1
cryptography ×1
decompiler ×1
eclipse ×1
exception ×1
listiterator ×1
settings ×1