相关疑难解决方法(0)

IntelliJ显示反编译的.class文件而不是源代码

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

这就是我所看到的:

反编译的类消息

我正在尝试打开常规的JDK源文件.

我找到的最相关的问题在这里解释:Java源代替Intellij中的反编译文件

到目前为止我发现的最详细的答案也是如此.

但它对我不起作用:

  1. 字节码查看器插件已关闭.

  2. Java Bytecode Decompiler插件已关闭.

  3. 平台,项目和模块都具有相同的JDK版本设置.

  4. 我在IntelliJ中有两个JDK:jdk1.8.0_161和jbsdk8u112b287.2_windows_x86(与IntelliJ捆绑在一起,但没有src.zip).尝试两者(必须为jbskk指定src.zip jdk1.8.0_161为jbsdk8u112b287.2_windows_x86) - 没有运气

  5. src.zip没有损坏 - 我可以通过WinRAR打开它

  6. 将jdk1.8.0_161添加到IntelliJ时,它会自动找到src.zip.当手动将src.zip添加到jbsdk8u112b287.2_windows_x86 Sourcepath选项卡时 - 它开始"扫描根目录",但警告我"无法确定所选项目包含哪种文件"并提示我"将它们附加为'源''"所以我同意了.

  7. 尝试文件>无效缓存/重新启动... - 相同的结果.

  8. 2017.3和IntelliJ的2018.1新版本中的相同问题.

  9. 为文档提供路径使IntelliJ在指定的路径中查找文档.所以它适用于两个JDK.但不是来源.

  10. 其他所有工作/编译正确.

我的设置:

设置

settings intellij-idea decompiler

23
推荐指数
1
解决办法
1万
查看次数

我在哪里可以找到javax.crypto源代码?

我在哪里可以找到javax.crypto源代码?

--update 感谢OpenJdk版本,但是jdk6版本怎么样?

java cryptography

16
推荐指数
1
解决办法
1万
查看次数

在IntelliJ或其他IDE中获取完整的JDK源代码

我的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.javaHttpClient.java则可以找到,但无处可寻。因此,我的IDE找不到它是有道理的。

在哪里可以获得完整的JDK源代码?

java eclipse intellij-idea

3
推荐指数
1
解决办法
3728
查看次数

Java在哪里保留标准库类?

Java在Windows操作系统下的硬盘驱动器上保留标准库类(如java.util.*)在哪里?

java

2
推荐指数
1
解决办法
186
查看次数

Java中的迭代器如何知道何时抛出ConcurrentModification异常

我有以下代码抛出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

-1
推荐指数
1
解决办法
369
查看次数